为什么 CSS 接受“灰色”而不接受“彩色”?

Obs*_*Age 3 css terminology

作为主要使用英式英语的人,CSS 不接受colour作为有效属性的事实是相当令人厌烦的,尤其是当它接受grey(及其偏差)作为有效值时。为什么 CSS 允许在值中使用英式英语,而不是在属性中使用?

根据W3 ​​CSS颜色规范,CSS值的官方color拼写是gray

颜色规格

然而,它也可以很好地接受grey(及其偏差):

.gray {
  color: gray;
}

.grey {
  color: grey;
}
Run Code Online (Sandbox Code Playgroud)
<span class="gray">gray</span>
<span class="grey">grey</span>
Run Code Online (Sandbox Code Playgroud)

这也是有道理的,因为X11 颜色名称(CSS Colors Level 3改编自)将grey拼写列为有效的替代项。

但为什么 CSS Colors Level 3 不允许colour作为属性呢?

.color {
  color: red;
}

.colour {
  colour: red;
}
Run Code Online (Sandbox Code Playgroud)
<span class="color">color</span>
<span class="colour">colour</span>
Run Code Online (Sandbox Code Playgroud)

规范的创建者允许替代值而不是属性是否有特定的原因?

Kai*_*ido 12

非常有趣的是,这种选择的历史是有详细记录的。

CSS 规范中有这个问题讨论了这一点。其中 Tab Atkins(tabatkins) 链接到Alex Sexton 提供的 JSConf视频,内容涉及 CSS 命名颜色背后的(相当有趣且有趣的)历史。

根据 Sexton 的说法,该grey值最初被添加到 MIT 的 rgb.txt文件中,指定“X11 颜色”,因为

惠普的一些程序员不记得哪一个是正确的。

几年后,Chris Lilley(svgeesus) 将这些值添加到 SVG 颜色中,最后 CSS3(早在 2001 年)将遵循 Ian Hickson(Hixie) 的说法,

[...] 只是为了编纂当前的做法。几乎每个浏览器都支持它们,并且这一点不会改变(因为它会破坏许多网站 [...]

现在,这并没有告诉我们为什么没有属性colour。为此,让我们回到 CSS 问题,其中tabatkins 给出了这是一个重复请求的提示。当时将命名颜色添加到 SVG 的同一个svgeesus也介入了这个线程并解释说

国际英语灰色和美国英语灰色的别名作为属性值问题最少(但如果今天提出这些关键字,可能仍然不会被采用)。作为一个函数符号,它会更有问题;如果两者都被指定,则需要优先级和去重复规则。color对于将属性别名为colour(并且所有属性都相同)更是如此*-color*

抱歉,这会增加更多问题,而不是解决更多问题。