css 支持 lab() 和 lch() 颜色函数,提供更符合人眼感知的色彩控制:lab() 通过亮度(L)、红绿轴(a)、黄蓝轴(b)精确调整颜色,避免传统模式的色彩偏差;lch() 采用亮度(L)、色度(C)、色调(H)的极坐标表示,便于创建统一饱和度与亮度的调色板;两者适用于平滑渐变与无障碍设计,现代浏览器已原生支持,建议为旧浏览器提供 HSL 或 HEX 降级方案。

CSS 现在完全支持 lab() 和 lch() 颜色函数,它们属于现代 CSS 引入的先进颜色空间,能提供更符合人眼感知的颜色控制方式。这些新方法解决了传统 RGB 或 HSL 在调整亮度、生成渐变时可能出现的色彩偏差问题。
lab() 颜色函数:基于人眼感知的精确控制
lab() 函数使用三个维度来定义颜色,更贴近人类视觉系统:
- L (Lightness):代表亮度,取值范围从 0%(纯黑)到 100%(纯白)。
- a 轴:控制绿色到红色的范围,-125 表示最绿,+125 表示最红。
- b 轴:控制蓝色到黄色的范围,-125 表示最蓝,+125 表示最黄。
这种模型的优势在于,当只调整 L 值时,可以得到真正意义上更亮或更暗的同色系颜色,而不会像 HSL 那样改变颜色的饱和度或色调。例如,color: lab(60%, 40, 60); 定义了一种中等亮度的蓝色,将 L 值提高到 80% 会得到一个明亮但不失真的浅蓝色。
lch() 颜色函数:更直观的极坐标表示法
lch() 是 lab() 的一种变体,它用更直观的方式表达相同的颜色信息:
立即学习“前端免费学习笔记(深入)”;
- L (Lightness):与 lab() 相同,表示亮度。
- C (Chroma):代表色度或饱和度,数值越大颜色越鲜艳。
- H (Hue):代表色调,以角度(0-360°)表示,0° 为红色,120° 为绿色,240° 为蓝色。
使用 lch() 的好处是,你可以像在调色软件中一样,通过固定 L 和 C 来创建统一饱和度和亮度的调色板,仅通过改变 H 值来切换不同色调。比如 background-color: lch(70% 80 240); 可以创建一个高饱和度、中等亮度的蓝色背景,非常适合设计一致性的主题。
实际应用与浏览器支持
这些现代颜色空间特别适合用于构建可访问性强、视觉效果平滑的设计,例如创建无障碍的对比度配色方案或自然的色彩渐变动画。虽然 IE 浏览器不支持,但主流现代浏览器(chrome, firefox, safari, edge)均已原生支持 lab() 和 lch()。为了兼容性,可以在前面提供一个 HSL 或 HEX 的降级方案。
基本上就这些,用好 lab 和 lch 能让你的颜色控制更上一层楼。


