#01
颜色空间基础:HEX/RGB/HSL
RGB(Red Green Blue)是一种加色模型,通过红、绿、蓝三种光的不同强度叠加产生颜色,每个通道用 0-255 的整数表示。在 Canvas、WebGL 等图形编程中,RGB 是最自然的数据类型,像素值通常按 R-G-B-A 顺序存储。
HEX(十六进制)是 RGB 的另一种书写方式,将每个通道值用两位十六进制数字表示并以 # 开头。标准写法为 #RRGGBB,简写为 #RGB(当每通道两位相同时)。从 CSS Color Module Level 4 开始,还支持 #RRGGBBAA(8 位 HEX)和 #RGBA,即增加 alpha 通道。
HSL(Hue Saturation Lightness)更接近人类感知。三个维度分别为:色相(Hue,0°~360°)、饱和度(Saturation,0%~100%)、亮度(Lightness,0%~100%)。HSL 最大的价值在于"保持色相不变时调节饱和度和亮度"——这对生成配色方案至关重要,例如:品牌色 + 更亮的 hover 态 + 更暗的 active 态。
#02
各格式优势与适用场景
不同颜色表示方式并非简单的等价替代,而是为不同场景优化。理解它们的优势有助于做出正确选择:
- HEX(十六进制)最适合作为"设计稿取色后的原始值"或"代码中的颜色常量"。特点是字符串短、书写紧凑、易于在代码中搜索、在 JSON/配置文件中常用、与设计软件(Figma/Sketch/Photoshop)兼容性最好。常见用法:作为 Tailwind 主题中的颜色值、作为组件库的 theme tokens。
- RGB / RGBA最适合需要精确控制透明度的场景——例如叠加效果、半透明遮罩、背景虚化。因为 alpha 通道(0~1)非常直观,且 CSS 中支持 rgba() 语法。对于 alpha 值,需要注意的是:alpha 不是"亮度"或"饱和度"——如果想调暗颜色,应该使用 HSL 的 L 通道。
- HSL / HSLA最适合"调色"场景——当你希望基于一个主色生成一套配色方案时。一个实用的调色流程:确定品牌主色 → 用 HSL 调节生成 hover/active/disabled 三态 → 用类比色(H ± 30°)或互补色(H + 180°)生成强调色 → 用低饱和 + 高 L 生成中性背景色。
关于"是否需要在不同项目间统一使用同一种写法":团队内约定一套"首要格式"(例如全部以 HEX 存储,然后在需要透明度的地方转换为 RGBA)是有益的,但不必为了"绝对统一"而牺牲可读性。关键在于:在同一文件/模块内保持风格一致。
#03
alpha 透明度与数据安全
alpha(透明度)是颜色表示中最常被误解的概念之一。alpha 的取值范围为 0~1(或 0%~100%):alpha = 1 表示完全不透明,alpha = 0 表示完全透明,介于二者之间的值表示半透明。直观理解:设置为 rgba(0, 0, 0, 0.5) 的黑色在白色背景上看起来像一个 50% 的灰色。
支持 alpha 的三种语法:rgba(r, g, b, a)(最常用);hsla(h, s%, l%, a)(适合在调色中保留透明度);#RRGGBBAA(8 位十六进制,CSS Color Module Level 4 引入,例如 #00000080 表示 50% 不透明的黑色)。8 位 HEX 的优势是书写紧凑,劣势是可读性较差且较老的浏览器(IE、旧版 Safari)可能不支持。现代浏览器(Chrome、Firefox、Safari 10+、Edge)均已支持。
数据安全:颜色处理是日常开发工作中"看起来不起眼但常常涉及敏感信息"的环节。你在工具中输入的色值来源——可能直接来自设计稿(包含未公开的品牌视觉规范)、来自客户提供的产品设计截图、来自你自己正在开发的新产品颜色方案——这些信息本身就具有商业价值。本工具的核心设计原则是"100% 在本地浏览器运行"。所有颜色识别、格式转换、CMYK/HSV/HWB 计算、预览渲染——全部在你自己的浏览器中完成。工具页面本身不向后端发送任何与输入内容相关的请求;即使你断开网络连接打开这个工具,它也一样能正常使用。
即使如此,对于包含高度敏感信息的颜色处理场景(例如尚未发布的品牌色、产品主题色、机密项目的配色方案),我们仍然建议你在断开网络的受控环境中操作,或在工具使用完成后关闭浏览器标签页。安全无小事,谨慎永远是正确的选择。