前端开发里颜色格式永远对不上:UI 设计师给的是 Figma 导出的 HEX,品牌规范里写的是 RGB,CSS 动画库要求 HSL,偶尔还会遇到 HSB。手动算一次还好,每天算就是纯粹的折磨。

在线颜色格式转换 →

四种常用颜色格式

HEX(十六进制)

用两位十六进制数分别表示红、绿、蓝三个通道,范围 00(0%)到 FF(100%):

color: #1a73e8;   /* Google 蓝 */
color: #fff;      /* #ffffff 的简写 */

HEX 是网页 CSS 中最常见的格式。当每个通道的两位数字相同时可以缩写——#ff6600#f60

RGB

三个 0–255 的整数,分别表示红、绿、蓝。CSS 还支持 rgba() 加第四个 alpha 通道(0–1):

color: rgb(26, 115, 232);
color: rgba(26, 115, 232, 0.8);  /* 80% 不透明度 */

RGB 直接对应显示器硬件,用代码操作颜色通道时最方便。

HSL

色相(0–360°)、饱和度(0–100%)、亮度(0–100%):

color: hsl(217, 80%, 51%);
color: hsla(217, 80%, 51%, 0.8);

HSL 是对人类最友好的格式。只改 L 值就能得到同一色系的深浅变体,做设计系统色阶时特别有用。

HSB / HSV

色相(0–360°)、饱和度(0–100%)、亮度(Brightness,0–100%)。不是 CSS 原生格式,但 Figma、Photoshop、Illustrator 默认用这个:

H: 217°  S: 89%  B: 91%

设计师给你 HSB 值时,需要先转成 HEX 或 RGB 才能写进 CSS。

HEX ↔ RGB:转换逻辑

HEX 转 RGB:拆成三对,每对从十六进制转十进制。

#1a73e8
  1a = 26
  73 = 115
  e8 = 232
→ rgb(26, 115, 232)

RGB 转 HEX:每个通道从十进制转十六进制,不足两位补零。

rgb(26, 115, 232)
  26 = 1a
 115 = 73
 232 = e8
→ #1a73e8

两个方向转换工具都能即时完成,不需要手动计算。

RGB ↔ HSL:心智模型

转换公式大约 20 行代码,没必要记。重要的是理解各维度的含义:

  • Hue 色相:颜色的种类(红、黄、绿、青、蓝、品红),用角度表示色轮上的位置
  • Saturation 饱和度:颜色的纯度,0% 是纯灰,100% 是最鲜艳的颜色
  • Lightness 亮度(HSL):0% 是纯黑,100% 是纯白,50% 是”正常”颜色

注意:HSL 的 L=50% 是纯色,HSB 的 B=100% 也是纯色,但两者不是同一尺度——这是最容易混淆的地方。

实战场景

构建设计系统色阶

从品牌色的 HEX 出发,转成 HSL 后只改 L 值:

--brand-100: hsl(217, 80%, 95%);  /* 最浅 */
--brand-300: hsl(217, 80%, 75%);
--brand-500: hsl(217, 80%, 51%);  /* 基础色 */
--brand-700: hsl(217, 80%, 35%);
--brand-900: hsl(217, 80%, 20%);  /* 最深 */

保持色相和饱和度不变,只调亮度,视觉上一致性最好。Tailwind CSS 的调色板就是这个逻辑。

处理设计稿颜色

Figma 和 PS 默认显示 HSB 值。设计师给你 H:217 S:89 B:91

  1. 粘贴到转换器的 HSB 输入框
  2. 复制 HEX 输出
  3. 写进 CSS

CSS 自定义属性中使用 HSL

用 CSS 变量拆开 HSL 的三个维度,不需要 Sass/Less 就能生成变体:

:root {
  --primary-hue: 217;
  --primary-sat: 80%;
  --primary: hsl(var(--primary-hue), var(--primary-sat), 51%);
  --primary-dark: hsl(var(--primary-hue), var(--primary-sat), 35%);
  --primary-light: hsl(var(--primary-hue), var(--primary-sat), 90%);
}

对比度检查

WCAG 对比度计算需要 RGB 亮度值。大多数对比度检查工具接受 HEX 输入,用转换器快速把任意格式转成 HEX 就能直接粘贴。

颜色格式速查表

格式示例使用场合
HEX#1a73e8HTML、CSS、SVG
RGBrgb(26, 115, 232)CSS、Canvas
RGBArgba(26, 115, 232, 0.8)CSS(含透明度)
HSLhsl(217, 80%, 51%)CSS、色阶设计
HSLAhsla(217, 80%, 51%, 0.8)CSS(含透明度)
HSB/HSVH:217 S:89 B:91Figma、Photoshop

常见错误

把 HEX 简写用在 JavaScript 里#f60 是合法 CSS,但部分 JavaScript 颜色解析库不支持。不确定时展开成 #ff6600

混淆 HSL 和 HSB 的亮度含义:HSL 中 L=50% 是纯色;HSB 中 B=100% 才是纯色(最亮最鲜艳)。两者数值相同但含义不同。

不加 alpha 就做透明效果rgb() 完全不透明。需要透明度时用 rgba()hsla(),或者用 CSS opacity 属性(会影响子元素)。


告别在 DevTools 和设计工具之间反复切换。立即使用颜色转换器 →