为什么不允许样式表列?

时间:2009-07-13 12:13:51

标签: html css css-tables col

W3 specifies表格列只允许使用四个CSS规则(<col>元素) - 边框,背景,宽度和可见性。

有谁知道这个决定背后的原因?如果你可以有边框和背景,为什么不使用字体和颜色?

4 个答案:

答案 0 :(得分:11)

Ian Hixie在此详细解释:The mystery of why only four properties apply to table columns。相关报价:

  

文本的颜色取决于其元素的“颜色”属性。除非指定,否则'color'属性(基本上)默认为'inherit',这意味着“获取父元素的值”。

     

因此对于单元格中的某些文本,颜色由单元格的“颜色”属性决定,该属性取自行中的行,该行取自表的父级,依此类推

     

专栏怎么样?那么,该列不是单元格的祖先之一,所以它永远不会被人看到!这就是问题所在。

答案 1 :(得分:8)

基于我有限的理解,只是在黑暗中狂奔:

我认为通过列相关元素的样式是受限制的,因为尽管<col><colgroup>代表单元格的列,但它实际上并不包含它们(它们实际上包含在<tr>中)。随之而来的是优先级和特异性问题以及级联问题(因为级联只能在包含/容器元素之间进行) - 当来自<tr><col>的冲突样式规则时(这将是同一级别)发生多重继承层次结构 - 该单元应该实际使用哪个?

至于为什么允许那些特殊的风格属性:不知道。

答案 2 :(得分:3)

一个词:含糊不清。细胞必须是行的孩子;否则它不会是一张桌子。但是没有专栏可供选择。使用colspan表示一个单元格可以位于两列中。为什么不让开发人员在每个第n个单元格上放置class,而不是试图想出一些令人困惑的方法呢?

如果仔细查看链接的规范,您将看到模糊度解析的尝试。 width属性指定最小值; background位于行和单元格的后座;和border引用了“冲突解决算法”。甚至算法border的唯一原因是因为合理地理解谁应该“赢”(详见算法)。但你能想象试图找出哪个colorfont应该“赢”吗?

答案 3 :(得分:0)

可能是因为表中的每一行都不一定要显示列的单元格(例如,因为colspan)。该单元格应该从哪个列继承它的样式?只是一个猜测。

相关问题