gray 和 grey 效果相同,是因为W3C标准明确定义二者为同义关键字,均解析为#808080;现代浏览器严格遵循该规范,但IE仅支持gray;混用会引发维护、工具链和兼容性问题。

gray 和 grey 效果相同,是因为它们在 W3C 标准中被明确定义为同一色值:#808080,不是浏览器“凑巧兼容”,而是规范强制等价。
W3C 明确将 gray/grey 定义为同一个关键字
CSS 颜色模块(CSS Color Module Level 4)把 gray 和 grey 列为同义关键字(aliases),二者共享唯一解析逻辑。浏览器解析时不会做“近似匹配”,而是直接映射到同一内部值。
- 所有符合标准的现代浏览器(Chrome、Firefox、Safari、Edge ≥79)都严格遵循该定义
- 这意味着
color: gray;和color: grey;经过 CSSOM 解析后,getComputedStyle(el).color返回的都是rgb(128, 128, 128) - PostCSS、Tailwind 的 color plugin、stylelint 等工具也按此标准处理,不引入额外转换
IE 是唯一例外:只认 gray,不认 grey
Internet Explorer(包括 IE11)未实现该别名机制,仅支持 gray;写 grey 会被当作无效值,回退为继承色或初始值(通常是黑色)。
- 若项目仍需兼容 IE,必须统一用
gray - CI 流程中若混用两者,某些旧版构建工具(如老版本 cssnano)可能静默丢弃
grey声明 - 无障碍检测工具(如 axe-core)通常跳过命名色检查,但若用
grey+ IE 兼容模式,可能意外导致对比度失效
团队协作中拼写不一致的真实代价
表面上只是英式/美式拼写偏好,实际影响搜索、维护和自动化流程。
立即学习“前端免费学习笔记(深入)”;
- VS Code 全局搜索
gray会漏掉所有grey实例,反之亦然 - 设计系统文档若同时出现两种写法,开发者无法通过 IDE 的「转到定义」快速定位统一色板源
- 颜色 token 提取脚本(如从 CSS 中正则抓取
color:\s*(\w+);)可能把gray和grey当作两个不同 token 处理
真正麻烦的不是「哪个更对」,而是「是否全项目统一」——哪怕全用 grey,只要没人在 gray 上打补丁,就比混用安全得多。


















