色导网渐变生成器:两种插值方式的实测对照
浏览器默认的线性渐变在 sRGB 里走直线,于是跨色相的渐变常常在中段发灰。把同一对端点换成 OKLCH 插值,中间色会明显不同。
两端颜色
- sRGB 中间色
- #848142
- OKLCH 中间色
- #00947B
- 两者色差 ΔE*ab
- 43.7
并排对照
sRGB 直线插值:浏览器默认的做法
OKLCH 插值:亮度与色相分开过渡
为什么中段会发灰
sRGB 的三个通道各自线性过渡时,彩度会在中途掉下去。从深蓝到亮黄就是典型:两端都很饱和,中间经过一片低彩度的灰绿。OKLCH 把亮度、彩度、色相拆开插值,彩度不会被顺带压掉,色相沿着色相角走最短路径。
CSS 本身已经支持 linear-gradient(in oklch, …),但要兼容旧浏览器时,最稳的办法是像上面输出的 CSS 那样把若干中间色算好写死——这也是本工具默认给出的形式。
什么时候不该用 OKLCH 插值
- 两端色相相同、只差明度时,两种插值几乎一样,没必要加九个色标。
- 需要和设计稿里某个具体中间色严格对齐时,直接写死那个色标更可控。
- 渐变面积很小(比如细分割线)时,差别看不出来,多写的色标只是体积。