实际指定的width属性是什么?

时间:2015-04-02 11:08:39

标签: html html5 xhtml xhtml-1.0-strict xhtml-transitional

我有点不清楚x / html < colgroup> 标记中宽度属性的用途是什么。

这个引用(不可否认的是现在放弃了xhtml 2.0规范)给出了一个示例,它清楚地表明colgroup的宽度表示整个列组的总宽度:

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

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

另一方面,大多数其他参考文献的含义含糊不清或暗示< colgroup> width属性只是另一个共享属性,用于设置每个列的宽度:

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

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

1 个答案:

答案 0 :(得分:1)

对这个问题没有明确的答案,我决定尝试一个经验解决方案;即当前版本的firefox(版本37)和chrome(版本41.0.2272.118 m)如何处理&lt; colgroup&gt; &lt; col&gt; 宽度属性?使用带有此标头的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"

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

  • &lt; colgroup&gt; width属性适用于每个&lt; col&gt; child并且不代表列组的宽度。
  • 如果在孩子中设置了宽度&lt; col&gt; element,这将覆盖父级&lt; colgroup&gt;。
  • 中的宽度设置
  • &lt; col&gt; width属性是指相对于整个表格的宽度,而不仅仅是&lt; colgroup&gt;父节点。

这些项目中的第一项证明了&lt; colgroup&gt;的概念。宽度只是xhtml2委员会提出的,当这个标准没有被采纳时,这个想法就消失了。后两个项目紧跟在第一个后面,因为宽度只是另一个级联属性,放置在&lt; colgroup&gt;中时没有特别的附加含义。标签

展望未来,HTML5规范不再附带DTD(委员会认为DTD不够表达;例如,没有办法表达&#34的想法;任何以数据开头的属性 - &#34;在DTD中.MS Visual Studio小组确实创建了一个HTML5架构,可以找到here

查看HTML5规范,&lt; colgroup&gt; /&lt;我在问题中提到的歧义已被清除:&lt; col&gt;不能再用作独立的&lt; table&gt;元素,但只能显示为&lt; colgroup&gt;的孩子。

查看之前引用的Spec和Visual Studio架构,根本不清楚如何处理列宽,因为此属性不会出现在&lt; colgroup&gt;中。或者&lt; col&gt;标签,据我所知。据推测,这应该通过使用 style 属性来严格处理。