在CSS中使用颜色名称代替颜色代码有什么好处吗?
例如,写入red
比#cc0000
更有效率。 它字符less,占用空间小,易于记忆。
使用hex代码或RGB值的颜色名称有什么缺点吗? 这包括在多开发人员环境中进行编程。
不同的浏览器可能不同意某些颜色名称的含义。 没有全部1600万24位颜色的名称。 实际上,只有17个W3C标准的颜色名称。 这可能是可以的。
我个人在构build时使用模板系统来预处理我的CSS文件,这样我就可以保留一组标准的站点颜色并按名称引用它们。 这样我得到了两全其美:我确切知道我的RGB颜色值是什么,但我可以在CSS中使用更简单的名称。
(当然,仍然无法确切知道给定用户浏览器的颜色。
编辑 – 这个答案写了5年之后,像Less和Sass这样的预处理器已经变得很普遍了。 这些提供了一些非常复杂的工具来pipe理CSS源代码中的颜色(以及其他许多东西)。
我build议你遵循W3C的build议:
所有这些(CSS级别1,级别2和级别3)都表示使用颜色名称是完全可以接受的,但是哪些是可接受的,取决于规格。
CSS1规范
CSS1规范build议使用颜色名称作为hex代码和RGB代码的有效替代。
6.3颜色单位
build议的关键字颜色名称列表是:水色,黑色,蓝色,紫红色,灰色,绿色,青柠檬,褐红色,海军蓝,橄榄色,紫色,红色,silverlight,蓝绿色,白色和黄色。 这16种颜色是从Windows VGA调色板中获取的,其RGB值在本规范中没有定义。
CSS2规范
你现在可以使用颜色名称orange
! 计数达17种颜色 。 CSS2规范供参考。
CSS3和X11颜色
CSS3允许将SVG 1.0的X11颜色用于CSS属性(以及hsl()
值)。 这将颜色名称的数量扩展到147种颜色 。 任何这些颜色名称都可以在任何支持SVG 1.0规范( IE9或更新版本)的浏览器中使用。
这也意味着问题中提供的颜色列表大多无效 。
build议的用法
如果你正在寻求支持传统的浏览器坚持原来的16个颜色名称,因为X11颜色不受支持。 否则,您可以自由使用X11规范中指定的147种颜色名称中的任何一种。
所有的浏览器都应该参照相应的hex代码来遵守规范。 分析器读取颜色名称的时间实际上与使用hex值,rgb值或hsl()值几乎相同。
对我来说,写小写的HEX代码更具可读性。 例如,#8b88b6明显比#8B88B6更具可读性。 此外,我倾向于使用简写HEX颜色,而不是完整的代码(#666而不是#666666),因为它更高效。
个人而言,我更喜欢使用hex代码,因为两个原因
- 从Photoshop复制hex代码更容易
- 您可以在整个样式表中使用hex代码,但是您必须混合使用两种样式(hex代码和颜色名称)。 所以你的样式表可以更一致/一致。
这假设你使用的颜色不同于简单的红色,黑色,白色等。在多开发环境中,我认为hex编码更好,因为它们更加通用(每个开发人员都知道颜色是什么)。
我更喜欢进一步优化, #c00
红色。 如果您要使用原色或与#aabbcc
类似的任何颜色,则可以使用简写#abc
。
我使用颜色名称进行原型devise,debugging,并设置真正基本的单色配色scheme,然后使用超特定的hex颜色进行配色。 这使得一个主题性的财产容易被发现。 它也更具人性化 当试图立即想象发生了什么事情时,减less大脑压力。
.component { background-color: black; color: white; }
然后在主题文件中
.some-theme .component { background-color: #5f5f5c; color: #fafafc; }
这真的归结于你的编码风格。 我坚持hex值的一致性 – 颜色总是格式为#000
或#000000
,我不必担心在namd和unnamed颜色之间切换。
最后,这是你和你的团队必须自己决定的决定。 这都是关于你的喜好。
就个人而言,如果可能的话,我更喜欢以同样的方式定义CSS文件中的所有颜色。
这样,当我看到不同的颜色定义时(例如red
, #cd876f
和rgba(255,255,0,0.4)
),我不必以不同的方式思考。
我也喜欢颜色符号,这些符号与我在实施的devise中识别颜色时所看到的相符。 Photoshop的调色板提供了RGB和hex值等,但不提供CSS颜色名称。 (其他devise工具可能会做。)
以前的答案现在已经过时了。
当你支持浏览器,CSS3,这是从IE9以来的所有浏览器,你可以使用CSS中的颜色名称。 在HTML中,仅支持16种原始Web颜色。
问题是如果有缺点。 我认为有几个:
- 一些颜色名称是不好的。 例子:
- Azure通常被认为是一个更深的颜色。
- 草坪绿色就像我见过的草坪。
- 紫罗兰看起来更像是我所说的粉红色。
- 通过改变其hex值来创build颜色的稍微更深或更浅的版本会更困难。 例如,#DCDCDC的较暗变体将是#DADADA,但是如果我以颜色名称gainsboro开始,我不会有任何想法。
- Javascript的计算在名字上更难。
来源: https : //developer.mozilla.org/en-US/docs/Web/CSS/color_value和http://caniuse.com/#search=css3%20colors
我认为颜色名称更具描述性,这是在可能的情况下使用它的一个很好的理由。
在我看来这是一个偏好问题。 如果颜色像红色,黑色,灰色,蓝色,白色等简单,那么不要使用该字而不是hex。