在主流浏览器中概述colspan?

时间:2013-07-08 23:32:40

标签: html html-table

我很好奇colspan在不同浏览器中的影响。

我有一个表格,其中一行作为标题使用colspan遍布所有列,我可能希望将来添加列。如果我只是让colspan有一些非常大的数字,这样我就可以添加列而不必更新标题,这会产生任何负面影响吗?

浏览器是否会表现不佳并且会创建大量的dud列,或者它们是否足够聪明以将其限制为表实际拥有的列数?

3 个答案:

答案 0 :(得分:2)

使用colspan跨越没有单元格开头的列会违反HTML表格模型(在HTML5 table processing model中正式化)。所有赌注都已关闭,并且在所有现有浏览器上进行测试(这是不可能的)是不够的 - 未来的浏览器可能会以不同的方式处理您的标记错误。

理论上,根据HTML 4.01,colspan=0表示“单元格跨越从当前列到列组(COLGROUP)的最后一列的所有列,其中定义了单元格”。但是,这没有实现,并且在HTML5中被删除(值0表示错误),没有任何替换。

很明显,作者或生成HTML文档的软件负责对列进行计数。也就是说,如果您向表中添加列,则需要修改colspan值,如果您希望单元格跨越所有列。

答案 1 :(得分:1)

MDN表示有两种行为,一种针对<th>,另一种针对<td>

对于header cellsth),该值必须为&gt; = 0,&lt; = 1000。如果大于1000,则剪辑为1000 ,如果为0,则横跨整个<colgroup>

对于data cellstd),值的值必须为&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>

http://jsfiddle.net/FYKqb/

在不同的浏览器中尝试。我估计他们一切都很好。