静态场景优先用#FF5733等6位HEX,体积小、解析快、兼容好;动态调色用rgba()便于JS运算;HSL适合可预测的明暗饱和度调整,三者应按需混用避免压缩失效。
#FF5733 而不是 rgb(255,
87, 51)
静态品牌色、边框、文字等无需动态调整的场景,优先用 6 位 HEX(如 #FF5733)。它体积最小、解析最快,所有浏览器无兼容问题,设计稿里复制即用。
#FF573380(旧版不认),得切到 rgba() 或现代 #RRGGBBAA(仅 Chrome 93+/Firefox 93+ 支持,iOS Safari 15.4+ 才稳定)#FF5733 变暗 20%,你得换算成 RGB → 减亮度 → 再转回 HEX,中间一步错就偏色#F53)做关键色——它会自动双写扩为 #FF5533,和原设计可能有细微偏差rgba(255, 87, 51, 0.6) 是 JS 动态调色的唯一靠谱选择需要 JavaScript 实时改颜色时(比如主题切换、悬停渐变、数据驱动色块),rgba() 是最直接可控的格式。浏览器原生支持数值运算,不用字符串解析。
rgb() 本身不带 alpha,写 rgb(255, 87, 51, 0.6) 是无效语法,必须用 rgba()
parseInt() 拆 #FF5733 得先处理十六进制,再转十进制,再算透明度,容易溢出或丢精度;而 rgba() 直接操作数字数组更稳--main-color: rgba(255, 87, 51, 0.6))在部分老 Android WebView 中对 RGBA 解析不稳定,生产环境建议 fallback 到 HEX + 单独 opacityhsl(12, 100%, 60%) 真正有用的地方不是“好看”,而是“可预测地调”HSL 不是炫技用的——它的价值在于:固定色相(H)后,只调 S(饱和度)或 L(亮度),就能生成视觉协调的配色,且变化方向符合人眼感知。
hsl(200, 70%, 50%) → 禁用只需改 hsl(200, 20%, 70%)(降饱和+提亮),比在 RGB 里乱调 R/G/B 数值靠谱得多@media (display-mode: standalone) { --base-lightness: clamp(40%, 55%, 65%); }
hsl(0, 100%, 50%) 表示红色——不同浏览器对色轮起点定义略有差异,实际用时建议以设计系统基准色为锚点做相对调整CSS 颜色值没有物理单位(不像 px 或 em),但格式选择直接影响代码体积、可维护性和渲染链路。
#RRGGBB 有专门优化路径,解析速度比 rgb() 快约 15%(实测于 Chromium 128)tomato)语义强但不可控——tomato 在 CSS 标准里固定为 #FF6347,但设计师给的番茄红可能是 #FF6A4D,硬套会导致验收不通过#f00 和 rgb(255,0,0)),悄悄增加包体积。