<color-interpolation-method>

基线 2023

新功能

2023 年 5 月,此功能在最新的设备和浏览器版本上均可使用。此功能可能在旧设备或浏览器中无法使用。

<color-interpolation-method> CSS 数据类型 表示用于在 颜色空间<color> 值之间进行插值的 颜色空间。它可以用于覆盖颜色相关函数符号(如 color-mix()linear-gradient())的默认插值颜色空间。

当插值 <color> 值时,插值颜色空间默认为 Oklab。

语法

<color-interpolation-method> 指定插值是否应该使用矩形颜色空间或极坐标颜色空间,并带有一个可选的色调插值方法。

in <rectangular-color-space>
// or
in <polar-color-space>[ <hue-interpolation method>]

<rectangular-color-space>

其中一个关键字:srgbsrgb-lineardisplay-p3a98-rgbprophoto-rgbrec2020laboklabxyzxyz-d50xyz-d65

<polar-color-space>

其中一个关键字:hslhwblchoklch

<hue-interpolation-method> 可选

色调插值的算法。它默认为 shorter hue

<custom-color-space>

一个 <dashed-ident>,它引用一个自定义 @color profile

正式语法

<color-interpolation-method> = 
in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? ]

<rectangular-color-space> =
srgb |
srgb-linear |
display-p3 |
a98-rgb |
prophoto-rgb |
rec2020 |
lab |
oklab |
xyz |
xyz-d50 |
xyz-d65

<polar-color-space> =
hsl |
hwb |
lch |
oklch

<hue-interpolation-method> =
[ shorter | longer | increasing | decreasing ] hue

示例

使用渐变比较插值颜色空间

以下示例显示了使用不同的插值颜色空间对 linear-gradient() 进行插值的效果。

HTML

html
<div>sRGB:</div>
<div class="gradient srgb"></div>
<div>Oklab:</div>
<div class="gradient oklab"></div>
<div>Oklch (with <code>longer hue</code>):</div>
<div class="gradient oklch-longer"></div>

CSS

css
.gradient {
  height: 50px;
  width: 100%;
}
.srgb {
  background-image: linear-gradient(in srgb to right, blue, red);
}
.oklab {
  background-image: linear-gradient(in oklab to right, blue, red);
}
.oklch-longer {
  background-image: linear-gradient(in oklch longer hue to right, blue, red);
}

结果

重复渐变中的颜色插值

以下示例展示了如何在重复渐变中插值颜色时指定颜色空间。三个方框显示了使用 repeating-conic-gradient()repeating-linear-gradient()repeating-radial-gradient() 函数的不同类型的重复渐变。第一个方框使用 Lab 颜色空间来插值两个颜色值。第二个和第三个方框使用 Oklch,并另外提供了一个 <hue-interpolation-method> 来指定如何在色调值之间进行插值。

HTML

html
<div class="gradient conic">conic</div>
<div class="gradient linear">linear</div>
<div class="gradient radial">radial</div>

CSS

我们在每个渐变中使用了相同的两种颜色,以演示 <hue-interpolation-method>颜色空间 对渐变中颜色插值的不同影响。

css
.conic {
  background-image: repeating-conic-gradient(
    in lab,
    burlywood,
    blueviolet 120deg
  );
}

.linear {
  background-image: repeating-linear-gradient(
    in oklch,
    burlywood,
    blueviolet 75px
  );
}

.radial {
  background-image: repeating-radial-gradient(
    in oklch longer hue,
    blueviolet 50px,
    burlywood 100px
  );
}

结果

比较第一个和第二个方框展示了在不同颜色空间中插值两种颜色的区别。比较第二个和第三个方框展示了 <hue-interpolation-method> 之间的区别,其中线性渐变使用较短的方法(默认),而径向渐变使用较长的方法。

规范

规范
CSS 颜色模块级别 4
# interpolation-space

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅