【问题标题】:What does the width attribute of <colgroup> actually specify?<colgroup> 的 width 属性实际上指定了什么?
【发布时间】:2015-06-07 07:39:48
【问题描述】:

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

这个参考(诚然是现在放弃的 xhtml 2.0 规范)给出了一个例子,清楚地表明 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 用户不会打扰此功能,并且最多会使用 标签来设置列属性。

【问题讨论】:

  • HTML5 没有提及它的事实意味着无论它打算做什么,浏览器都没有实现它。所以没有办法“正确使用属性”。根本不要使用它。
  • 嗯,HTML5中既有标签又有宽度属性,所以你可以使用它;我只是找不到应该如何使用它的解释。但是你遇到了我昨天的想法:只需在 Firefox 和 chrome 中进行测试,看看它是如何实现的。

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


【解决方案1】:

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

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

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

这些项目符号中的第一个项目表明

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

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

查看 HTML5 Spec,我在问题中提到的

/ 不能再用作独立的 元素,而只能作为子元素出现。

查看前面引用的 Spec 和 Visual Studio 架构,根本不清楚如何处理列宽,因为该属性不会出现在

或 标记中,据我所知可以告诉。据推测,这将通过使用 style 属性来严格处理。

【讨论】:

  • 旧的HTML 4.01 spec 明确表示“此属性为当前列组中的每一列指定默认宽度。”所以不是 total 宽度。我会说,忘记任何与 XHTML2 相关的东西; XHTML2 不存在;其中提出的任何更改都没有在任何浏览器中实现。
  • 我同意。只是考虑到
/标记结构,xhtml2 中提出的更改是有意义的。 HTML5 解决方案更改了标记结构,使 始终是 的子项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 2020-11-21
  • 2015-02-26
  • 2017-06-29
  • 2013-06-13
  • 2021-10-25
相关资源
最近更新 更多