-->

为什么造型表列不允许?(Why is styling table columns not allow

2019-06-25 18:28发布

W3指定 ,只有四个CSS规则所允许的表列(与<col>元素) -边框,背景,宽度和可见性。

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

Answer 1:

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

文本的颜色取决于它的元素的“颜色”属性。 除非指定,“颜色”属性(基本上)默认为“继承”,这意味着“取的父元素的值”。

因此,对于在小区一些文字,色彩是由细胞,这是从该行,这是从该表,从表中的上级单位部门等采取采取的“色”属性决定。

怎么样的列? 那么,该列不是细胞的祖先之一,所以它从来没有得到一个查询中! ,这其中就有问题。



Answer 2:

只是胡乱刺在基于我有限的了解黑暗:

我想通过柱相关元素的造型受到限制,因为虽然<col><colgroup>代表单元的列,它实际上并不包含它们(他们实际上是被包含<tr> S)。 有了这个自带的优先级和特异性和级联的问题(因为级联只能包含之间完成/容器元素) -从当冲突的样式规则的<tr><col>这将是一个多重继承层次结构中的同一级别)发生 - 这应该小区实际使用?

至于为何样式属性的特定少数被允许的,虽然:不知道。



Answer 3:

一个字:不确定性。 这些细胞必须是行的儿童; 它不会是一个表,否则。 但没有列从下降。 使用colspan意味着一个细胞可以在两列。 而不是试图想出一些令人困惑的出路,为什么不干脆让开发人员放置一个class上的每个第n个小区?

如果你在给你链接到的规格仔细观察,你会看到在歧义解决的尝试。 的width属性指定的最小; 的background需要后座到行和细胞; 和border引用“冲突解决算法”。 甚至有一种算法的唯一原因border是因为它是合理地理解谁应该“赢”(详见算法)。 但是,你能想象试图找出其中colorfont要“赢”?



Answer 4:

可能是因为表中的每一行不一定要显示你的(例如,因为合并单元格)列的单元格。 这列应是细胞继承它的风格的? 只是一个猜测。



文章来源: Why is styling table columns not allowed?