oklch()现可使用,但仅支持Chrome 112+、Firefox 121+、Safari 17.4+;旧版浏览器静默忽略,需用@supports(color: oklch(0% 0 0))检测并前置fallback色,参数必须严格按L%C°H°/α格式书写,单位缺一不可。

oklch() 现在就能用,但只在 Chrome 112+、Firefox 121+、Safari 17.4+ 中生效;旧版本或多数安卓 WebView 会静默忽略整条声明,直接回退到前一条颜色(比如 color: oklch(60% 0.2 240); color: #3b82f6;,老浏览器只认 #3b82f6)。
oklch() 参数写错一个单位,整条规则就失效
错一个单位,不是变灰,是彻底消失。DevTools 不显示原值,只能靠视觉验证。
-
oklch(60 0.2 240)❌ —— L 缺%,Chrome 112 会拒斥 -
oklch(60% 0.2 240)❌ —— C 缺单位(必须是0.2或20%,不能混用;0.2合法,20%也合法,但不能写成0.2+240deg却漏掉 C 的单位标识) -
oklch(60% 0.2 240deg)✅ —— 全部显式带单位,且顺序固定:L → C → H -
oklch(60% 0.2 240 / 0.8)✅ —— alpha 必须用/分隔,不能写成oklch(60% 0.2 240, 0.8)
L 范围是 0%–100%(或 0–1),不是 0–255;C 实际安全上限取决于色相——蓝绿区可达 0.35,红橙区常卡在 0.22 左右,超限会被 clamp 成灰阶。
@supports 检测必须写在 fallback 颜色之后,且不能用 oklab()
仅靠写两条颜色声明(background-color: #2563eb; background-color: oklch(0.62 0.28 258.5);)不够——某些安卓 WebView 会跳过所有后续声明。必须用 @supports 显式包裹 OKLCH 专属逻辑。
立即学习“前端免费学习笔记(深入)”;
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
-
@supports (color: oklab(0 0 0))不可靠,当前所有主流浏览器都返回false - 正确检测只能用
@supports (color: oklch(0% 0 0)) - 降级色必须写在
@supports块外部且上方,顺序不能反 - 别用
@supports not (color: oklch(0% 0 0))写 fallback——安卓 WebView 里有解析 bug
示例写法:
button {
background-color: #2563eb;
}
@supports (color: oklch(0% 0 0)) {
button {
background-color: oklch(0.62 0.28 258.5);
}
}
渐变和禁用态里调 OKLCH 参数,别碰 H 轴跨 0/360
OKLCH 渐变视觉均匀的前提,是插值路径不绕远。浏览器不会自动选短弧,所以从 oklch(0.7 0.25 350deg) 到 oklch(0.7 0.25 10deg) 会经过中间一大段灰带(实际走 350→360→0→10)。
- 禁用态:固定 H,只降 C(如
0.28 → 0.12),L 最多微调 ±0.02;绝不用opacity模拟 - 深色模式:固定 H 和 C,只调 L(如
0.62 → 0.38) - 渐变色相过渡:手动拆成两段,或改用
color-mix(in oklch, )计算中间点 -
color-mix()必须两端都用oklch()值,混用red或rgb()整条声明被忽略
自定义属性 + 过渡动画会悄悄退化成 sRGB 插值
CSS 自定义属性无法保留色彩空间信息,--primary: oklch(0.6 0.25 240); transition: background 0.3s; 动画实际走的是 sRGB 插值,OKLab 均匀性完全丢失。
- 想保持感知均匀插值,必须所有节点都用
oklch(),且写在同一个linear-gradient()或color-mix()表达式中 - 不要指望
--hover: hsl(240, 70%, 70%)和--primary: oklch(...)在 transition 中“混合”出 OKLCH 效果 - 调试时用
getComputedStyle(el).backgroundColor读不出 OKLCH 值——它永远返回 sRGB 十六进制,唯一可靠手段是视觉比对 + 控制 C ≤ 0.28
最易被忽略的点:内联 style 属性(如 style="background-color: oklch(60% 0.28 258.5);")在 Chrome 112–115、Safari 17.4 中对小数位和单位更苛刻,容易整条失效;稳妥做法是只在 <style> 块或外部 CSS 文件中使用。


















