HTML标准颜色名共17个,如black、blue、red等;其余约130个(如aliceblue)属CSS扩展,非HTML原生支持,在旧浏览器或邮件客户端中可能失效。

HTML标准颜色名只有17个,别被“147种”误导
W3C HTML 4.0 规范明确定义的标准颜色名共 17 个:如 black、blue、red、white、green、yellow、purple、fuchsia、aqua、lime、olive、navy、teal、maroon、silver、gray、orange。后续 CSS 规范扩展出的 aliceblue、antiquewhite 等约130个名称属于 CSS 颜色模块(CSS Color Module Level 3+),不是 HTML 原生支持的“标准颜色名”。
浏览器渲染时,这些扩展名基本都支持,但严格来说:只有这17个能确保在所有 HTML 解析器(包括老旧邮件客户端、简易渲染器)中无歧义生效。
哪些颜色名在旧版 IE 或嵌入式 WebView 中可能失效
像 rebeccapurple(2014年加入)、darkslategray、lightgoldenrodyellow 这类带连字符或长单词的颜色名,在 IE8 及更早版本、部分 Android 4.x WebView、某些邮件模板引擎里会被直接忽略,回退为透明或默认文本色。
-
rebeccapurple在 IE8 中解析为无效值,color不生效 -
lightcoral和lightseagreen在 Outlook 2007–2013 的 Word 渲染引擎中常被当作未知名丢弃 - 大小写敏感:写成
Blue或BLUE在部分旧解析器中不识别,必须小写blue
用十六进制还是颜色名?关键看场景
颜色名本质是十六进制值的别名,比如 red ≡ #ff0000,tomato ≡ #ff6347。选哪个取决于可维护性与兼容性权衡:
立即学习“前端免费学习笔记(深入)”;
- 团队协作/设计系统中用
tomato比写#ff6347更易读、易搜索 - 需要精确控制色差(如深浅灰系)时,
#333、#4a4a4a比dimgray、darkgray更可靠——后者在不同浏览器里实际渲染略有差异 - 自动化构建流程中,若用 PostCSS 或 Sass 变量统一管理,建议全用变量(如
$brand-primary),而非混用名与十六进制
如何快速查某个颜色名对应什么值
不用翻表,浏览器控制台一行就能验:
getComputedStyle(document.body).color = 'red' // 返回 'rgb(255, 0, 0)'
或者直接用 CSS.supports('color', 'rebeccapurple') 判断当前环境是否识别该名(返回 true / false)。
注意:CSS.supports 对大小写敏感,且不校验是否已定义——它只查 CSS 引擎是否接受该语法。真正保险的做法仍是:对关键 UI 色彩,用 rgb() 或 # 十六进制兜底。
最常被忽略的一点:颜色名没有 alpha 通道支持。想半透明?必须用 rgba(255, 0, 0, 0.5) 或 hsla(),red 后加 / 0.5 是 CSS Color Level 4 语法,目前仅 Chromium 110+ 和 Safari 16.4+ 支持,Firefox 尚未落地。



















