【发布时间】:2021-06-29 05:15:55
【问题描述】:
The spec for blend-mode saturation 说:
使用源颜色的饱和度和背景颜色的色调和亮度创建颜色。
最初我认为它是 HSL,因为它是您可以在 Web 开发中使用的唯一具有饱和度通道的色彩空间,但显然不是这样:
.color {
width: 100px;
height: 100px;
}
.expected-color {
background: hsl(270, 25%, 50%);
}
.backdrop-color {
background: hsl(270, 85%, 50%);
}
.source-color {
mix-blend-mode: saturation;
background: hsl(45, 25%, 50%);
}
Expected
<div class="color expected-color"></div>
Actual
<div class="color backdrop-color">
<div class="color source-color"></div>
</div>
演示 HSV/HSB 并不容易,但我使用颜色转换器(例如link)所做的测试表明它也不是那种颜色空间。
.color {
width: 100px;
height: 100px;
}
.expected-color {
/* HSB/HSV - 270, 25, 50 */
background: #706080;
}
.backdrop-color {
/* HSB/HSV - 270, 85, 50 */
background: #491380;
}
.source-color {
/* HSB/HSV - 45, 25, 50 */
mix-blend-mode: saturation;
background: #807860;
}
Expected
<div class="color expected-color"></div>
Actual
<div class="color backdrop-color">
<div class="color source-color"></div>
</div>
LCH (converter) 也一样,它没有饱和度通道,但它的色度通道实际上是饱和度的模拟:
.color {
width: 100px;
height: 100px;
}
.expected-color {
/* LCH - 50, 25, 270 */
background: rgb(90,121,161);
}
.backdrop-color {
/* LCH - 50, 85, 270 */
background: rgb(0,125,255);
}
.source-color {
/* LCH - 50, 25, 45 */
mix-blend-mode: saturation;
background: rgb(157,107,90);
}
Expected
<div class="color expected-color"></div>
Actual
<div class="color backdrop-color">
<div class="color source-color"></div>
</div>
似乎在 Edge、Chrome 和 Firefox 中保持一致。
那么mix-blend-mode: saturation 定义在什么色彩空间中?还是我误解了它的工作原理?
【问题讨论】:
标签: css svg mix-blend-mode