W3规定,表格列(使用<col>
元素)只允许使用四个CSS规则 - border、background、width和visibility。
有人知道这个决定背后的原因吗?如果可以设置边框和背景,为什么不能设置字体和颜色呢?
W3规定,表格列(使用<col>
元素)只允许使用四个CSS规则 - border、background、width和visibility。
有人知道这个决定背后的原因吗?如果可以设置边框和背景,为什么不能设置字体和颜色呢?
文本的颜色取决于其元素的“color”属性。除非指定,“color”属性(基本上)默认为“inherit”,这意味着“继承父元素的值”。
因此,对于单元格中的某些文本,颜色取决于单元格的“color”属性,该属性从行中获取,行又从表中获取,表又从其父元素中获取,以此类推。
那么列呢?由于列不是单元格的祖先之一,所以它永远无法生效!此处就是问题所在。
根据我有限的理解,以下是一个猜测:
我认为通过列相关元素进行样式设置受到限制,因为尽管 <col>
和 <colgroup>
表示单元格的列,但它们实际上并不包含它们(它们实际上被 <tr>
包含)。这带来了优先级、特定性和级联的问题(因为级联只能在包含/被包含元素之间完成)——当来自 <tr>
和 <col>
的冲突样式规则(它们在多重继承层次结构中处于相同的级别)发生时,单元格应该使用哪个?
至于为什么允许使用那些特定的一些样式属性:我不知道。
colspan
意味着一个单元格可以在两个列中。与其想出一些令人困惑的方法,为什么不让开发人员对每个第 n 个单元格放置一个 class
呢?width
属性指定最小值;background
落后于行和单元格;border
引用“冲突解决算法”。之所以甚至有一个 border
算法,是因为我们可以合理地理解谁应该“获胜”(详见算法)。但是,您能想象试图弄清哪个 color
或 font
应该“获胜”吗?