为什么CSS接受“grey”而不接受“color”?

xe55xuns  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(209)

作为一个主要使用英式英语的人,CSS不接受colour作为有效属性的事实是相当令人讨厌的,* 特别是 * 当它接受grey(及其偏差)作为有效值时。为什么CSS允许在值中使用英式英语,而不是在属性中?
根据W3 CSS color specification,CSS color值的官方拼写是gray

然而,它也接受grey(及其偏差):

.gray {
  color: gray;
}

.grey {
  color: grey;
}
<span class="gray">gray</span>
<span class="grey">grey</span>

这也是有意义的,因为X11 color names(CSS颜色级别3 adapted from)列出了grey拼写作为有效的替代。
但是为什么CSS Colors Level 3不允许colour作为属性呢?

.color {
  color: red;
}

.colour {
  colour: red;
}
<span class="color">color</span>
<span class="colour">colour</span>

规范的创建者允许值的替代而不允许属性的替代,这有什么特殊的原因吗?

guz6ccqo

guz6ccqo1#

非常有趣的是,这种选择的历史有很好的记录。
CSS规范中有谈到这一点的问题。在那里,Tab阿特金斯(tabatkins)链接到Alex Sexton给出的JSConf的this video,关于CSS命名颜色背后的(非常有趣和有趣的)历史。
According to Sextongrey值最初被添加到MIT的rgb.txt文件中,该文件指定“X11颜色”,因为
惠普的一些程序员不记得哪一个是正确的。
几年后,Chris Lilley(svgeesus)将这些值添加到SVG颜色中,最后CSS3(早在2001年)将遵循Ian Hickson(Hixie)的说法,
[...]只是为了编纂现行做法。几乎每个浏览器都支持它们,这不会改变(因为它会破坏许多网站)。
现在,这并没有告诉我们为什么我们没有colour属性。为此,让我们回到CSS问题,其中 tabatkins 提示这是一个重复请求。同样的 svgeesus,它将命名的颜色添加到SVG中,然后也介入到这个线程中,并解释说
国际英语灰色和美国英语灰色的别名作为属性值是最不成问题的(但如果今天提出这些关键字,可能仍然不会被采用)。作为一个函数符号,它会更成问题;如果同时规定了优先规则和重复规则,则需要这两项规则。对于将color属性别名为colour(对于所有*-color*属性也是如此),情况更是如此。
抱歉,这会增加比它解决的问题更多的问题。

相关问题