有趣的颜色混合模式——mix-blend-mode

1,978 阅读2分钟

mix-blend-mode

最近又发现了一个很有意思的css-属性 ———— mix-blend-mode。

按字面意思看可以叫做混合模式。如果你是一个有ps使用经验的码农,那就不难理解这个概念。css的混合模式和ps混合模式都是一个概念的东西,也就是多个图层叠在一起时,要怎么处理相交的部分,我们可以用混合模式,将多个元素巧妙地组合在一起。

用法

混合模式共有16个类型,这里不一一介绍他们的原理。

mix-blend-mode: normal;
mix-blend-mode: multiply;
mix-blend-mode: screen;
mix-blend-mode: overlay;
mix-blend-mode: darken;
mix-blend-mode: lighten;
mix-blend-mode: color-dodge
mix-blend-mode: color-burn;
mix-blend-mode: hard-light;
mix-blend-mode: soft-light;
mix-blend-mode: difference;
mix-blend-mode: exclusion;
mix-blend-mode: hue;
mix-blend-mode: saturation;
mix-blend-mode: color;
mix-blend-mode: luminosity;

mix-blend-mode: initial;
mix-blend-mode: inherit;
mix-blend-mode: unset;

我们都知道,在默认状态下,当html元素发生重叠时,默认是覆盖的

而当我们给三个圆加上mix-blend-mode属性的时候,就可以改变他们的混合模式。 不同的混合模式的效果大概如下

image.png

方便大家看到不同透明度下不同混合模式的效果,我写了一个demo: codepen.io/1171326722/…

实现效果

有个混合模式这个效果,我可以发散思维,将图片和文字之类的元素组合起来,实现一些效果。

1.镂空文字

image.png 代码;codepen.io/1171326722/…

这是利用了mix-blend-mode: screen,文字本身是黑色的,进过背景颜色过滤后,就变成了和背景一样的颜色,加上文字白色的背景颜色,达到了镂空的效果。

2.图片叠加

image.png 代码:codepen.io/1171326722/…

原理就是两张图片叠加,给上面的人物图片设置mix-blend-mode: lighten

3.手电筒效果

手电筒.gif 代码:codepen.io/1171326722/…

原理是给上层的遮罩元素设置mix-blend-mode: multiply遮盖下层的图片,再利用radial-gradient 给'遮罩开一个洞'达到手电筒的效果。