20

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

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

4

4 回答 4

13

Ian Hixie 在这里详细解释:为什么只有四个属性适用于表列的奥秘。相关报价:

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

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

柱子呢?好吧,该列不是单元格的祖先之一,因此它永远不会被查看!这就是问题所在。

于 2009-07-13T13:24:52.180 回答
8

根据我有限的理解,这只是黑暗中的狂野刺:

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

至于为什么允许特定的少数样式属性:不知道。

于 2009-07-13T12:25:57.457 回答
4

一个词:模棱两可。单元格必须是行的孩子;否则它不会是一张桌子。但是没有可以下降的列。使用colspan意味着一个单元格可以在两列中。与其想出一些令人困惑的出路,不如让开发人员class在每第 n 个单元格上放置一个?

如果您仔细查看您链接到的规范,您会看到解决歧义的尝试。该width属性指定一个最小值;background在行和单元格中处于次要地位;并border引用了“冲突解决算法”。甚至有算法的唯一原因border是因为可以合理地理解谁应该“获胜”(有关详细信息,请参阅算法)。但是你能想象试图找出哪个colorfont应该“获胜”吗?

于 2009-07-13T12:39:40.020 回答
0

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

于 2009-07-13T12:22:56.613 回答