1

我有点不清楚x/html <colgroup>标签中width属性的预期用途是什么。

这个参考(诚然是现在放弃的 xhtml 2.0 规范)给出了一个例子,清楚地表明 colgroup 的宽度表示整个列组的总宽度:

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

(在这里得到证实:http ://reference.sitepoint.com/html/colgroup )

另一方面,大多数其他参考资料的含义模棱两可,或者暗示 <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

<colgroup> 中对 width 属性的建议使用是否随着时间的推移而改变?唯一有意义的定义是为 xhtml 2.0 规范给出的定义,否则使用它大多是多余的。在我看来,<colgroup> 和 <col> 的使用是经过深思熟虑的——过多的冗余,这会让用户感到困惑。例如,

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

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

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

4

1 回答 1

1

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

<?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"

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

  • <colgroup> 宽度属性适用于每个 <col> 子级,并不代表列组的宽度。
  • 如果在子 <col> 元素中设置了宽度,则会覆盖父 <colgroup> 中的宽度设置。
  • <col> 宽度属性是指相对于整个表的宽度,而不仅仅是 <colgroup> 父级。

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

展望未来,HTML5 规范不再附带 DTD(委员会认为 DTD 不够表达;例如,无法在 DTD 中表示“任何以数据开头的属性”的想法。 MS Visual Studio 小组确实创建了一个 HTML5 架构,可以在这里找到。

查看 HTML5 规范,我在问题中提到的 <colgroup>/< 歧义已被清除: <col> 不能再用作独立的 <table> 元素,而只能作为 <colgroup 的子元素出现>。

查看前面引用的 Spec 和 Visual Studio 架构,根本不清楚如何处理列宽,因为据我所知,此属性不会出现在 <colgroup> 或 <col> 标记中。据推测,这将通过使用style属性来严格处理。

于 2015-04-03T10:15:05.477 回答