<colgroup> 的宽度属性实际上指定了什么?

What does the width attribute of <colgroup> actually specify?

我有点不清楚 width 属性在 x/html 中的用途标签是。

这个引用(诚然是现在废弃的xhtml 2.0 spec)给出了一个例子,明确表示colgroup的宽度表示整组列的总宽度:

http://www.w3.org/TR/2004/WD-xhtml2-20040722/mod-tables.html

(此处证实:http://reference.sitepoint.com/html/colgroup

另一方面,大多数其他参考文献的含义含糊不清,或者暗示 宽度属性只是另一个为每个单独的列设置宽度的共享属性:

http://www.w3.org/TR/html401/struct/tables.html

(此处证实:http://xhtml.com/en/xhtml/reference/colgroup/

HTML5 规范对宽度属性没有任何说明:

http://www.w3.org/TR/html5/tabular-data.html#the-colgroup-element

中 width 属性的建议使用是否随时间发生了变化?唯一有意义的定义是为 xhtml 2.0 规范给出的定义,否则使用它大多是多余的。在我看来, 和 的使用考虑不周——过多的冗余,让用户感到困惑。例如,

<colgroup span=2 align="center"/>

<col span=2 align="center"/>

做同样的事情。能够为一组可以单独覆盖的列共同设置属性的小便利远远超过了对所有这些进行排序的额外处理复杂性。此外,如果 中的 width 不适用于引用列组的总宽度,那么我建议 标签是完全多余的,不必要的保存节省一点打字。事实上,我已经研究了一段时间,但仍然不知道如何正确使用这个属性,这表明典型的 html 用户不会为这个功能烦恼,最多只会使用用于设置列属性的 标签集合。

由于这个问题没有明确的答案,我决定尝试一个经验性的解决方案;即当前版本的 firefox(版本 37)和 chrome(版本 41.0.2272.118 m)如何处理 width属性?使用 xhtml 测试文件 header:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

以下是我的实验得出的结论:

  • 宽度属性应用于每个child,不代表列组的宽度。
  • 如果在 child 元素中设置宽度,这将覆盖 parent 中的宽度设置。
  • 宽度属性是指相对于整个 table 的宽度,而不仅仅是 parent.

这些项目符号中的第一个项目表明 宽度的想法只是 xhtml2 委员会想出的东西,当该标准未被采用时,这个想法就死了。后两个项目符号项目紧跟第一个项目符号项目,因为宽度只是另一个级联属性,放在 标记中时没有特别的附加含义。

展望未来,HTML5 规范不再附带 DTD(委员会认为 DTD 的表现力不够;例如,无法表示 "any attribute beginning with data-" 在 DTD 中。MS Visual Studio 小组确实创建了一个 HTML5 架构,可以在 here.

中找到

查看 HTML5 规范,我在问题中提到的 /< 歧义已被清除: 不能再用作独立的

元素,但只能作为 .

的 child 出现

查看前面引用的规范和 Visual Studio 模式,根本不清楚列宽是如何处理的,因为该属性既没有出现在

也没有出现在 标记中,据我所知。大概这是通过使用 style 属性来严格处理的。