为什么colspan属性不能设置为零?

4
根据HTML5的描述,属性rowspan可以有值0。在这种情况下,值为零表示单元格应跨越行组中给定列中的所有剩余单元格。
然而,colspan的值不能等于零。
因此,一个问题就出现了:为什么要对属性colspan进行这样的限制?

你为什么认为colspan可能不等于零?你能提供你看到该限制的来源参考吗? - Banana
@Banana 请查看此处 http://www.w3.org/TR/2014/REC-html5-20141028/tabular-data.html#attributes-common-to-td-and-th-elements - Vlad from Moscow
根据该页面,那些属性colspan, rowspan不能用于重叠单元格,而根据Mozilla Dev,这就是HTML5中限制colspan的原因。 - Banana
1个回答

2
这是从https://lists.w3.org/Archives/Public/public-html/2011Aug/0293.html中引用的,但它详细解释了这个问题。
在HTML4中,TD / TH元素的“colspan”和“rowspan”属性允许具有零值(“0”):http://www.w3.org/TR/html4/struct/tables.html#adef-colspan。当列或行号事先不知道时,这非常有用。强制Web编辑器手动计算列或行数而浏览器可以轻松自动完成这一点是有害的。
规范开发中有一个已知的规则:当规范有两个独立的实现时,规范状态将提升为“推荐”(“候选”或“建议”)。但已经有两个(好吧,1.5个)工作独立的零colspan / rowspan实现:
1. Firefox(零colspan和rowspan都完全工作)
2. Opera(支持rowspan =“0”,不支持colspan =“0”)。
因此,colspan / rowspan的零值非常适合保留在HTML规范中,并且更鼓励其余浏览器供应商尽快实施此有用的功能。
没有什么严重的理由从HTML规范中删除colspan / rowspan的零值。它不是“完全未实现”的东西,它已经相当可用并应在HTML规范中保持完好无损。
HTML5规范(4.9.11)还明确指出,colspan应为非零,而rowspan可以为零,以及零意味着什么:http://www.w3.org/TR/html5/tabular-data.html#attr-tdth-colspan
为什么会这样?简单来说,HTML5规范明确规定了此限制。在我看来,除了遵循规范之外,我认为浏览器不会保留零的含义与Firefox实现的其他含义相同的原因。

我在 Firefox 116 中测试了 colspan="0",但似乎不支持 colspan="0",所以可能他们移除了这个功能。据我所知,目前没有任何浏览器支持 colspan="0"。 - Albert Wiersch
有趣。由于这个回答是在2015年写的,最近8年里可能发生了一些变化。对于这样的帖子来说,写更新是很常见的。 - Rob S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接