oklch 的 h 值复用 hsl 色相模型(0°红、120°绿、240°蓝),但插值不走短弧、单位禁用 deg、小数位宜≤1,且跨空间 h 值仅近似对齐,需实测验证。

oklch() 的 H 值就是标准 0–360° 色相角,和 hsl() 完全一致
OKLCH 的 h 参数不是新定义的“环”,它直接复用 HSL 的色相模型:0° 是红,120° 是绿,240° 是蓝,360° 回到红——数值含义、起始点、方向(逆时针)全部对齐。浏览器渲染时也按同一套色环映射,oklch(0.6 0.28 0) 和 hsl(0, 100%, 60%) 都指向视觉上最“正”的红色(尽管亮度/饱和感不同)。
色相插值不自动走短弧,350° → 10° 会经过 360°→0°→10°
CSS 引擎对 oklch() 渐变或 transition 中的 h 插值不做路径优化,它按数值线性计算。这意味着:
-
oklch(0.7 0.25 350)→oklch(0.7 0.25 10)实际经过350→355→360→5→10 - 中间帧会短暂出现
h=0(正红)和h=360(等价于 0),但因 C 在高色相区被数学压缩,视觉上常表现为灰紫带 - 只要色相差 > 180°,就必须手动拆段:
linear-gradient(oklch(0.7 0.25 350), oklch(0.7 0.25 360), oklch(0.7 0.25 10))
H 值不能带 deg 单位,小数位建议 ≤1
h 是纯数字角度,加 deg 会导致 Safari 16.x 和部分安卓 WebView 解析失败。同时,浮点精度要克制:
-
oklch(60% 0.28 258.5)✅ 安全 -
oklch(60% 0.28 258.543)❌ Safari 17.4 某些子版本可能静默忽略整条声明 -
oklch(60% 0.28 258deg)❌ 所有已知支持 oklch() 的浏览器均拒斥
别指望 H 值跨色彩空间“对齐”,它只在 OKLab 内部语义稳定
h=240 在 oklch() 和 hsl() 里都指蓝,但这是巧合,不是设计保证。同一 h 值下:
-
hsl(240, 100%, 50%)的视觉亮度 ≈ 0.54(CIE Y),而oklch(50% 0.32 240)的 L=0.5 才真正对应人眼感知中灰 - 把
hsl(240, 100%, 50%)直接换成oklch(50% 0.32 240)会明显变暗,正确换算应是oklch(54% 0.32 240) - 所有跨空间的 H 值复用,本质都是近似映射,最终效果必须实测
% 或多加一个 deg,整条声明就消失,连 warning 都没有。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











