我建议你遵循W3C的推荐:
所有的规范(CSS Level 1、Level 2和Level 3)都指出使用颜色名称是完全可以接受的,但哪些颜色名称具体可接受则取决于规范。
CSS1规范建议使用颜色名称作为十六进制代码和RGB代码的有效替代方案。
6.3 颜色单位
推荐使用的关键字颜色名称列表包括:aqua、black、blue、fuchsia、gray、green、lime、maroon、navy、olive、purple、red、silver、teal、white和yellow。这些16种颜色来自Windows VGA调色板,它们的RGB值在该规范中没有定义。
现在你可以使用颜色名称orange
了!总共有17种颜色。请参考CSS2规范。
CSS3允许使用SVG 1.0的X11颜色作为CSS属性(以及hsl()
值)的值。这将颜色名称的数量扩展到147种颜色。任何支持SVG 1.0规范的浏览器都可以使用这些颜色名称,包括IE9或更高版本。
这也意味着问题中提供的颜色列表大多数不可接受。
如果您要支持旧版浏览器,请使用网络安全的原始16种颜色名称,因为不支持X11颜色。否则,您可以自由地使用X11规范中指定的147种颜色名称。
所有浏览器都应遵守规范,使用相应的十六进制代码。解析器读取颜色名称所需时间与使用十六进制值、RGB值或HSL()值的时间几乎相同,甚至可能完全相同。
对我而言,将HEX代码写成小写更易于阅读。例如,#8b88b6显然比#8B88B6更易读。此外,我倾向于使用简写的HEX颜色而非完整代码(#666而不是#666666),因为更高效。
个人而言,我更喜欢使用十六进制代码,主要有两个原因:
当然,这是在你使用的颜色不仅仅是简单的红、黑、白等颜色时才适用。在多人开发环境中,我认为使用十六进制代码更好,因为它们更具普遍性,每个开发人员都能准确地知道颜色是什么。
之前的回答现在看起来已经过时了。
如果您开发支持CSS3的浏览器(自IE9以来,所有主要浏览器都支持),您可以在CSS中使用颜色名称。在HTML中,仅支持16种原始网络颜色。
问题是是否存在缺点。我认为有一些:
来源: https://developer.mozilla.org/zh-CN/docs/Web/CSS/color_value 和 http://caniuse.com/#search=css3%20colors
darkgray
(#a9a9a9
)比gray
(#808080
)浅! - MarcusOtterdarkgray
(#a9a9a9
)比gray
(#808080
)还要浅! - undefined我在原型设计、调试和设置基本的单色调配色方案时使用颜色名称,并为后续使用超特定十六进制颜色主题化做好准备。这使得我们能够轻松地找到可主题化的属性,并且更容易阅读;无需费尽心思即可快速想象出正在发生的事情。
.component {
background-color: black;
color: white;
}
...然后在主题文件中...
.some-theme .component {
background-color: #5f5f5c;
color: #fafafc;
}
我希望进行进一步的优化,使用#c00
代表红色。如果你要使用主要颜色或任何类似于#aabbcc
的颜色,可以使用缩写形式#abc
。
这实际上取决于你的编码风格。我坚持使用十六进制值以保持一致性 - 颜色始终格式化为#000
或#000000
,我不必担心在命名和未命名颜色之间切换。
最终,这是你和你的团队需要自行决定的问题。这完全取决于你的个人喜好。
个人而言,如果可能的话,我更喜欢在CSS文件中以相同的方式定义所有颜色。
这样,当我看到不同的颜色定义时(例如red
、#cd876f
和rgba(255,255,0,0.4)
),我就不必用不同的方式思考。
我还喜欢与我正在实现的设计中识别颜色时所看到的匹配的颜色符号。Photoshop的颜色调色板提供RGB和十六进制值,但不提供CSS颜色名称。(其他设计工具可能会提供)
我认为使用十六进制代码比颜色名称更有用,因为举个例子,如果你想要使用红色,并且使用“red”作为颜色值,但是你不喜欢预定义的红色,你想要更浅或者更深的颜色,这时候十六进制代码就非常有用了。
一旦你有了自己选择的红色,每次想要使用它时,你会记得那个十六进制代码,而不是再使用颜色名称。
我认为颜色名称更具描述性...这是在可能的情况下使用它的好理由。