CSS3混合模式mix-blend-mode/background-blend-mode简介

这篇文章发布于 2015年05月29日,星期五,22:30,归类于 css相关。 阅读 45770 次, 今日 45 次 11 条评论

 

一、关于混合模式

熟悉PS的人都应该知道混合模式:
PS混合模式截图

SVG以及Canvas中也有混合模式,本质上都是一样的。

下面是一些常见的混合模式的算法:
混合模式算法

维基上也有说明。有兴趣可以了解下。

本文内容则简单介绍CSS3出现了两个与混合模式有关的属性,mix-blend-modebackground-blend-mode.

二、CSS3 mix-blend-mode

首先,要知道”blend-mode”就是混合模式的意思。那mix, 恩,我也不知道为什么命名为mix, 可能是该属性不仅可以作用于HTML,还可以作用于SVG,干脆叫mix一起捋过来。该CSS属性作用是让元素内容和这个元素的背景以及下面的元素发生“混合”。

兼容性如下:

mix-blend-mode兼容性表

可见,最近的Chrome以及FireFox浏览器都已经支持良好,而且无需使用私有前缀。

其支持的值很多,中英文对照如下:

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;           //复原

后面三个酱油气息浓郁,PS中未曾出现,大家可以无视。

如果你想体验各个混合模式的作用表现,您可以狠狠地点击这里:CSS3 mix-blend-mode混合模式Demo

比方说选择叠加,则文字和后面的内容的混合效果就是这样:

叠加效果截图

mix-blend-mode为我们实现一些文字特效又提供了更广阔的思路了。

补充于2016-01-09
mix-blend-mode默认情况下是会混合所有比起层叠顺序低的元素的,如果我们希望值混合某一两个元素,而不是全部,该怎么办呢?可以试试使用CSS3 isolation:isolate,具体如何使用?作用原理是什么?等问题可以参考“理解CSS3中的isolation:isolate”这篇文章。

三、CSS3 background-blend-mode

background-blend-mode这个要更好理解一点,背景的混合模式。可以是背景图片见的混合,也可以是背景图片和背景色的混合。

兼容性如下:

background-blend-mode兼容性表

支持的属性值跟上面一样,就不重复展示。

如果你想体验各个混合模式的作用表现,您可以狠狠地点击这里:CSS3 background-blend-mode混合模式Demo

例如,选择一个常见的multiply正片叠底,结果两个妹子合体了:

背景混合正片叠底效果

需要注意的是,只能是background属性中的背景图片和颜色混合,而且只能在一个background属性中。

CSS3 backgrounds多背景IE9+浏览器就开始支持了。因此,你想混合多图,就是要逗号,一个一个写在background属性中就可以了,例如本Demo的两个妹子:

.box {
    background: url(mm1.jpg) no-repeat center, url(mm2.jpg) no-repeat center; 
}

四、结束语

因为是简介,所以本文到此结束。

拓展阅读

(本篇完)

分享到:1

赞助商推荐(我也要赞助)

想学到点真东西? ×
如果你有1~3年前端开发经验,不妨 ×
想高薪入职阿里? ×
想通过真实互联网项目成长自己? ×


发表评论(目前11 条评论)

  1. bobo说道:

    是不是css相关的所有问题都能在你这找到答案?是不是?是不是?

    • 彭丹说道:

      我也觉得是这样的,关注作者一年了,我发现无论我在百度上搜索多冷门的CSS,也能链接到作者这里来。。。

  2. 菜蛋说道:

    子元素设置了mix-blend-mode: multiply; 父元素的animation就不生效了,请问是什么原因?

  3. noboy2说道:

    大神,资讯一下!设置了mix-blend-mode:screen是不是不能再设置opacity或者 css3相关属性,如(transition transform….);发现设置透明或者css3相关动画或者变形属性 滤镜情况下回车线黑底!!!

  4. flow说道:

    mix-blend-mode默认情况下是会混合所有比 起[其] 层叠顺序低的元素的

    可以是背景图片 见[间] 的混合,也可以是背景图片和背景色的混合。

  5. Humphry说道:

    这个属性是可能创建一个新的stacking context的,类似opacity<1的效果,所以有可能导致一些层叠关系上的bug

  6. candywxt说道:

    感谢~~
    目前用这个属性不多,在玩PS的时候对于这些叠加滤色之类的也是随着自己感觉一个一个看效果,觉得哪个好就用哪个,具体的混合算法还没研究过。其实如果会了这些叠加的算法,去水印那是分分钟的事情了~~

  7. 挺好说道:

    大神 ,我想问一下,你的那个浏览器兼容性的图片是怎么测出来的?有专门的网址吗?

  8. 阿发说道:

    好好的一个妹子就这样被你。。。