str2

246天天好彩图文神奇的CSS3混合模式

2018-12-04 04:43

  对于前端开发人员应该都很熟悉Photoshop的图层混合模式,就是几个图层按不同的模式进行混合,实现不同的图像效果。但是当我们前端同学在切这些效果图的时候,基本上就是一刀切的,即使是文字,当字体很炫的话,2019另版葡京赌侠诗句,2019葡京赌侠诗001-153我们也不得不用切图来替代。实际上在16年CSS3就新增了一个很有意思的属性--mix-blend-mode,我们称之为混合模式,它类同于ps的混合模式,也就是说在CSS中我们也可以利用混合模式制作出一些效果。

  先引出一个小例子,我们来看下css3混合模式到底可以实现一个什么样的效果

  有这样一个需求,当文本跨越一个与自身颜色相似的区域时,怎么实现颜色反转?

  写一大堆css实现,总之css应该是能实现的但是有了css3的混合模式,我们可以直接将文本的颜色翻转到黑色背景中,两行css代码就搞定了。十二生肖买马网站,广东十二生肖买马网站

  是不是很强大,很easy的就实现了我们的需求。那么在上面的例子中用到了mix-blend-mode:difference;混合模式的差值模式,到底css3有几种与混合模式相关的属性,取值又都有哪些,我们先看一下基础概念,再举一些基础应用的例子。

  mix-blend-model属性用来定义元素与背景的混合模式,可以是元素与背景图片的混合,也可以是元素与背景色的混合

  background-blend-mode属性用来定义背景的混合模式,可以是背景图片与背景图片的混合,也可以是背景图片和背景色的混合

  引题的小例子就是用的mix-blend-mode属性,实现的是文本和背景图的混合。下面介绍一下混合模式的取值情况,我们首先学习3个术语:基色,混合色和结果色。

  normal正常直接返回结果色multiply正片叠底查看每个通道中的颜色信息,并将基色与混合色复合screen滤色与“正片叠底”相反,查看每个通道的颜色信息,将图像的基色与混合色结合起来产生比两种颜色都浅的第三种颜色overlay叠加把图像的基色与混合色相混合产生一种中间色。darken变暗查看每个通道中的颜色信息,并选择基色或混合色中较暗的颜色作为结果色lighten变亮查看每个通道中的颜色信息,并选择基色或混合色中较亮的颜色作为结果色color-dodge颜色减淡查看每个通道中的颜色信息,并通过减小对比度使基色变亮以反映混合色。与黑色混合则不发生变化color-burn颜色加深查看每个通道中的颜色信息,并通过增加对比度使基色变暗以反映混合色,如果与白色混合的话将不会产生变化hard-light强光产生一种强光照射的效果。如果混合色比基色更亮一些,那么结果色将更亮;如果混合色比基色更暗一些,那么结果色将更暗soft-light柔光产生一种柔光照射的效果。如果混合色比基色更亮一些,那么结果色将更亮;如果混合色比基色更暗一些,那么结果色将更暗,使图像的亮度反差增大difference差值查看每个通道中的颜色信息,从图像中基色的亮度值减去混合色的亮度值,如果结果为负,则取正值,产生反相效果exclusion排除与“差值”模式相似,但是具有高对比度和低饱和度的特点。比用“差值”模式获得的颜色要柔和、更明亮一些hue色相选择基色的亮度和饱和度值与混合色进行混合而创建的效果,混合后的亮度及饱和度取决于基色,但色相取决于混合色saturation饱和度在保持基色色相和亮度值的前提下,只用混合色的饱和度值进行着色。基色与混合色的饱和度值不同时,才使用混合色进行着色处理。若饱和度为0,则与任何混合色叠加均无变化。当基色不变的情况下,混合色图像饱和度越低,结果色饱和度越低;混合色图像饱和度越高,结果色饱和度越高color颜色引用基色的明度和混合色的色相与饱和度创建结果色。它能够使用混合色的饱和度和色相同时进行着色,这样可以保护图像的灰色色调,但结果色的颜色由混合色决定。颜色模式可以看作是饱和度模式和色相模式的综合效果,一般用于为图像添加单色效果luminosity亮度能够使用混合色的亮度值进行着色,而保持基色的饱和度和色相数值不变。其实就是用基色中的“色相”和“饱和度”以及混合色的亮度创建结果色

  这些api是不是看着头大,我也是看了前几个还行,后面就晕了,那不妨给他们归归类

  归类后更清晰一些,知道哪些取值大概可以实现什么效果了,好了,理论说这么多,我们还是来具体看看这些混合模式到底可以制作出来什么样的炫酷效果吧~

  我们可以用mix-blend-mod制作出混合文字和文字背景图,之前做页面碰到混合文字类的,因为重叠部分显示颜色的问题,我们往往是把文字切出来一个图片实现的,现在用css3的混合模式可以轻易实现了;文字背景图也很简单,我们只需要构造出黑色文字,白色底色的文字div,叠加上图片,再运用mix-blend-mode即可。核心代码如下,简单看一下:

  我们发现在混合文字的例子中,用到了isolation:isolate这个css3属性,这个属性正如其语义,就是隔离的意思,那隔离什么呢?是用来隔离mix-blend-mode元素的混合的。当元素应用了混合模式的时候,默认情况下,其会混合所有层叠顺序比其低的层叠元素。像文字混合的例子中,我们不用隔离属性的话,文字颜色还会混合白色背景,“words”显示的就不是绿色了,但是,我们就希望混合模式只用到某一个元素,不向下渗透了的话,isolation:isolate就派上用场了,它会阻断混合模式的进行,允许使一组元素从它们后面的背景中独立出来,只混合这组元素。大家有兴趣的话可以研究下这个属性。

  之前我们想hover改变一个icon的颜色,基本上也是切出来两个图,原始的一个,本港台直播在线看软件,下载本港台hover后加颜色的一个来回切换的,实际上我们这样的交互应用还挺多,像“收藏”按钮、着重提示按钮等,但是有了css3混合模式,还是那句话,两行代码统统搞定这些效果,不管是渐变、纯色皆可以,246天天好彩图文下面看下渐变色hover的效果图:

  看了上面一个简单的hover动画后,我想到了之前公众号里老推的智力或者心理疲劳度测试题,就是一张图老在那动,动的你头晕,看你能坚持几秒。我们用黑白两种颜色加上css3的混合模式就能做出那种动效,我发现黑白这两种颜色在一起总能碰撞出不一样的火花,利用黑白的差值模式,2019年全年开奖记录表,2019年开奖记录开奖结果表可以实现这个万花筒的动效。

  大概介绍到这里,实际上即使已知每种混合模式的定义,也很难预测如何应用某种混合模式会影响混合元素,所以选择混合模式通常是一个反复试验的过程,但是在实验的过程中我们用纯CSS,几行代码就能实现了这些很炫的效果,是不是很奇妙。感兴趣的同学可以用这些属性做些小动画,小游戏也是极好的。大东方心经ab仙人指路,东方心经ab仙人指路96但这么炫的属性,用的都不是很多,很大原因也是因为兼容性的问题,我们来看一下兼容情况:

  可以看到兼容性不是很好,246天天好彩图文所以用的时候,最好判断一下浏览器的兼容性,推荐两种方法,以上面引题的例子做说明

  到这就介绍完了,实际上类似于混合模式的css3有意思的属性还很多,有兴趣的话我们可以一块探讨交流下~