为啥 CSS 接受“灰色”而不接受“颜色”?

Posted

技术标签:

【中文标题】为啥 CSS 接受“灰色”而不接受“颜色”?【英文标题】:Why does CSS accept 'grey' but not 'colour'?为什么 CSS 接受“灰色”而不接受“颜色”? 【发布时间】:2022-01-22 14:05:51 【问题描述】:

作为主要使用英式英语的人,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>

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

【问题讨论】:

致读者:这个问题不是基于意见的;它有一个明确的、记录在案的答案(参见 Kaiido 的答案)。值得一提的是,工作组用美式英语实现了 CSS(尽管并非在所有领域都完全正确。我在看着你,动画填充模式:forwards )。 “grey”是美式英语中“gray”的可接受变体,但“color”不是“color”的可接受变体。 【参考方案1】:

非常有趣的是,这种选择的历史有据可查。

CSS 规范中有 this issue 谈到了这一点。在那里,Tab Atkins(tabatkins) 链接到 this video 的一个 JSConf,由 Alex Sexton 提供,关于 CSS 命名颜色背后的(非常有趣和有趣的)历史。

According to Sexton,grey 值最初被添加到指定“X11 颜色”的 MIT 的 rgb.txt 文件中,因为

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

几年后,Chris Lilley(svgeesus) 将这些值添加到 SVG 颜色中,最终 CSS3(早在 2001 年)将如 Ian Hickson(Hixie) 所说的那样跟进,

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

现在,这并不能告诉我们为什么我们没有colour 属性。为此,让我们回到 CSS 问题,tabatkins gives a hint 这是一个经常性的请求。 svgeesus 确实将命名的颜色添加到 SVG,然后 intervenes in this thread 并解释了这一点

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

抱歉,这会带来比它解决的问题更多的问题。

【讨论】:

以上是关于为啥 CSS 接受“灰色”而不接受“颜色”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 CToolBar 中使用高深度颜色的禁用按钮只是灰色框?

svn log 为啥有蓝色,有灰色,啥区别?

Chrome 开发工具在灰色背景上显示 CSS 规则。为啥?

在 iOS7 中,为啥选中的单元格的背景颜色总是灰色的?

css在灰色透明的背景下,如何才能使上面的字的颜色为白色?

为啥 Chrome 检查器中的 CSS 规则显示为灰色 [重复]