为什么这些名称显得历史感很重、缺乏系统性
这些名称所依据的X11颜色列表,是在20世纪80年代为早期Unix图形系统编制的,主要靠给颜色起一些容易联想到的物品、布料、颜料的名字来命名,而不是依据某种系统化的色相理论。CSS和它之前的SVG,都是为了兼容性和方便,直接整套采用了这份名单,而没有重新设计,这也是为什么这些名称至今看起来更像是历史遗留产物,而不是刻意规划出来的配色系统。
什么时候适合用预设颜色名称,什么时候更适合用HEX或RGB
在快速搭建原型、写便于阅读的示例代码,或者需要用到transparent、currentColor这类没有对应数值写法的CSS关键字时,预设颜色名称确实很实用。但如果需要精确还原品牌色、严格匹配设计系统的调色板,或者需要精细调整色彩,由于预设颜色的调色板是固定的、无法精确表示绝大多数颜色,使用HEX或RGB值会更可靠。
常见问题
CSS里实际支持多少个预设颜色名称?
CSS颜色规范中定义了147个颜色关键字,不过具体数字会因为是否把gray和grey这类拼写差异算作两个颜色而略有不同,这两种拼写最终都会解析为同一个色值。
预设颜色名称在不同浏览器里显示效果一致吗?
是的。由于预设颜色名称在CSS规范中被标准化为固定的HEX值,所有现代浏览器渲染出来的颜色都是一致的,不会像系统字体或表单控件的默认样式那样出现浏览器之间的差异。