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