为啥 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 中使用高深度颜色的禁用按钮只是灰色框?