【发布时间】:2014-11-08 07:20:11
【问题描述】:
我正在尝试以与在 Photoshop 文件中相同的方式处理图像 - 将图像去饱和为灰度,然后使用多重混合模式应用颜色叠加。为此,我正在设计一个 CSS 背景图像...
.someclass
{
/* grayscale */
-webkit-filter: grayscale(1);
filter: gray;
filter: grayscale(1);
filter: url(desaturate.svg#greyscale);
/* multiply */
background-color: rgba(190, 50, 50, 0.65);
background-blend-mode: multiply;
}
这样做的问题是灰度滤镜最终会降低混合模式下的红色饱和度。换句话说,乘法首先发生,然后是灰度。如何切换,先应用灰度,再应用混合模式?
我为代码创建了一个小提琴 (http://jsfiddle.net/g54LcoL1/1/) 和一个屏幕截图(在 Photoshop 中制作),我希望小提琴结果看起来像。最底部的图像div.grayscale.multiply 应为红色。
【问题讨论】:
-
这在 CSS AFAIK 中是不可能的。这是因为 CSS 在矩阵中执行所有操作,因此设置了所有属性的顺序。替代方法是事先将图像保存为灰度,或者使用类似画布的东西来做一个,然后另一个
-
作为 CSS 的“用户”,在我看来,这应该发生的方式是它在代码中声明的顺序。我确信它是有原因的,但随着
background-blend-mode得到更广泛的支持,人们将要求更多地控制混合/过滤器的顺序。我想canvas是要走的路。我试试看。 -
Css 是自下而上的语言,也许那是你的问题,我不知道。无论如何尝试 Pleeeease Playground 它转换过滤器。
-
从来没有
-moz前缀filter属性。从问题中删除它......
标签: css background css-filters background-blend-mode