我很好奇colspan在不同浏览器中的影响。
我有一个表格,其中一行作为标题使用colspan遍布所有列,我可能希望将来添加列。如果我只是让colspan有一些非常大的数字,这样我就可以添加列而不必更新标题,这会产生任何负面影响吗?
浏览器是否会表现不佳并且会创建大量的dud列,或者它们是否足够聪明以将其限制为表实际拥有的列数?
答案 0 :(得分:2)
使用colspan
跨越没有单元格开头的列会违反HTML表格模型(在HTML5 table processing model中正式化)。所有赌注都已关闭,并且在所有现有浏览器上进行测试(这是不可能的)是不够的 - 未来的浏览器可能会以不同的方式处理您的标记错误。
理论上,根据HTML 4.01,colspan=0
表示“单元格跨越从当前列到列组(COLGROUP)的最后一列的所有列,其中定义了单元格”。但是,这没有实现,并且在HTML5中被删除(值0表示错误),没有任何替换。
很明显,作者或生成HTML文档的软件负责对列进行计数。也就是说,如果您向表中添加列,则需要修改colspan
值,如果您希望单元格跨越所有列。
答案 1 :(得分:1)
MDN表示有两种行为,一种针对<th>
,另一种针对<td>
。
对于header cells(th
),该值必须为&gt; = 0,&lt; = 1000。如果大于1000,则剪辑为1000 ,如果为0,则横跨整个<colgroup>
。
对于data cells(td
),值的值必须为&gt; = 0,&lt; = 1000.如果值> 1000,则设置为1 ,如果它为0则跨越整个<colgroup>
。
此外,Firefox似乎是唯一支持0 = colgroup规则的人。
答案 2 :(得分:0)
最好的办法是尝试一下。但我猜他们一切都会好起来的。
什么是非常大的数字? 50? 100? 10000?
这里有一个200列和一个colspan的小提琴:
<table>
<tr>
<th colspan="200">test</th>
</tr>
<tr>
<td>test</td>
...
</tr>
</table>
在不同的浏览器中尝试。我估计他们一切都很好。