
传统的网页布局中,各个元素之间存在着“层叠”和“遮挡”的关系,视觉效果比较单一。而CSS3中的mix-blend-mode属性则打破了这种限制,使元素的内容和背景可以实时地进行颜色混合,就像在画布上涂抹颜料一样给界面带来强烈的艺术感。
mix-blend-mode的作用就是给当前元素和它后面的所有图层之间建立一个颜色混合的方式。它的原理来自于图形设计软件里的“混合模式”,用数学公式把每个像素的颜色和下面对应的像素的颜色做运算得到一个新的颜色值,在浏览器里渲染的时候会根据设置好的模式来实时计算出来显示效果,不需要任何图像处理软件参与。
此属性可以配合不同的混合函数来使用,每一种模式都有自己的一套视觉效果:
-
multiply(正片叠底):把像素的颜色相乘之后再除以255,得到的颜色要比原来的颜色要深一些。可以用来做投影效果、叠加纹理或者制造出一种老式印刷的效果。
-
screen(滤色):与正片叠底相反,将颜色反转后相乘再反转,结果色更亮。常用于高光叠加、光晕效果。
-
overlay(叠加):结合正片叠底与滤色,保留底层明暗对比的同时混合颜色,能增强图像对比度而不丢失细节。
-
difference(差值):计算两像素颜色差的绝对值,产生高反差、负片般的视觉效果,适合创造前卫、实验性的界面风格。
-
color-dodge(颜色减淡)与color-burn(颜色加深):分别通过提亮和压暗底层来反射混合色,常用于模拟光照或浓重阴影。
在实际应用中,混合模式可以解决很多设计问题。比如,在深色背景下用白色字体显示的时候,使用mix-blend-mode: difference可以让文字在任何地方都能自动反色、保持可读性;把半透明渐变层和照片叠加在一起,再用overlay模式进行处理,就可以很快做出有质感的英雄横幅了;还可以把各种颜色的几何图形一层层地叠起来,加上screen或者multiply的效果来直接渲染出复杂的抽象背景,从而减少图片请求。
在使用混合模式的时候要注意性能和兼容性的问题,混合计算会给GPU带来压力,在低配设备或者大范围的动画中可能会出现卡顿的情况,所以建议对于静态元素或者小范围区域使用。另外一些模式在不同的浏览器之间会有细微差别,重要的视觉效果要进行多平台测试。此外混合效果还会受到元素层叠上下文的影响,如果父元素创建了一个新的层叠上下文的话那么混合就会被限制在这个容器里面不能和下面的背景发生作用。
mix-blend-mode给网页视觉带来了全新的表达方式,把原来需要用预处理来达到的效果全部用CSS来实现出来。合理使用这个功能不仅可以降低对资源的依赖程度,还可以创造出一种动态、自适应并且富有艺术感的界面体验,使网页设计进入到了一个新的阶段——即代码就是画布。
总结
mix-blend-mode可以实时进行像素级别的色彩运算,使网页元素和背景产生深度的视觉效果。了解各种混合模式的数学原理以及它们所呈现出来的视觉特点之后,在提高文字清晰度、叠加纹理或者创建动态背景等方面都能起到很大的作用。考虑到性能问题和层叠上下文的影响,混合模式将会成为增强界面艺术性和交互体验的重要工具之一。






