W3 specifies表格列只允许使用四个CSS规则(<col>
元素) - 边框,背景,宽度和可见性。
有谁知道这个决定背后的原因?如果你可以有边框和背景,为什么不使用字体和颜色?
答案 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
的唯一原因是因为合理地理解谁应该“赢”(详见算法)。但你能想象试图找出哪个color
或font
应该“赢”吗?
答案 3 :(得分:0)
可能是因为表中的每一行都不一定要显示列的单元格(例如,因为colspan)。该单元格应该从哪个列继承它的样式?只是一个猜测。