Swayopus

oklch 色彩空间:现代 CSS 的配色新范式

设计 约 224 字 · 预计 1 分钟
By Merrick Jun Ouyang

为什么不用 HSL?

HSL 有一个众所周知的问题:相同 Lightness 值的不同色相,人眼感知亮度完全不同

例如,hsl(240, 100%, 50%)(蓝色)和 hsl(60, 100%, 50%)(黄色)的 L 都是 50%,但黄色明显比蓝色亮得多。

oklch 的改进

oklch 使用感知均匀的亮度通道:

:root {
  /* 这两个颜色的感知亮度是一致的 */
  --blue: oklch(0.6 0.2 265);
  --yellow: oklch(0.6 0.2 95);
}

亮暗模式的优雅切换

:root {
  --bg: oklch(0.98 0.002 106); /* 亮色背景 */
  --text: oklch(0.25 0.01 106); /* 亮色文字 */
}

.dark {
  --bg: oklch(0.18 0.008 260); /* 暗色背景 */
  --text: oklch(0.9 0.008 260); /* 暗色文字 */
}

浏览器支持

oklch 已在所有现代浏览器中得到支持(Chrome 111+, Safari 15.4+, Firefox 113+)。

小结

从 HSL 迁移到 oklch 是值得的——更准确的亮度控制、更简洁的实现方式、更好的可访问性。