美文网首页
17、染色效果

17、染色效果

作者: Elevens_regret | 来源:发表于2017-04-12 17:10 被阅读0次

    1、基于滤镜的方案 (此属性浏览器支持程度不高)

    网页中常常看到图片为灰度的,hover之后渐变为彩色,可以利用filter滤镜实现这一效果。filter中grayscale函数可以实现灰度特效。filter属性还支持CSS渐变动画。

    #a img{
        transition: filter 1s;
        filter: grayscale(100%);
    }
    #a img:hover{
        filter: grayscale(0);
    }
    

    filter属性的滤镜可以叠加使用。下面的代码可以让图片变为一种亮粉红色。

    filter: sepia(1) saturate(4) hue-rotate(295deg);
    

    2、基于混合模式的方案 (此属性浏览器支持程度不高)

    当两个元素叠加时,混合模式可以控制上层元素与下层元素的颜色进行混合,其本质与PS中的混合模式相同。混合模式即为mix-blend-mode和background-blend-mode属性,前者为整个元素指定混合模式,后者为每层背景单独指定混合模式。
    使用mix-blend-mode需要两层结构,例如a链接包裹的img图片。

    #a{
        background: #ff1374;
    }
    #a img{
        mix-blend-mode: luminosity;
    }
    

    mix-blend-mode属性不支持CSS渐变动画,如果想要实现渐变动画,可以换另一种方式。将这张图片设为某个元素的背景图,再对这个元素使用background-blend-mode属性,并同时设置其背景颜色,然背景颜色与背景图片进行混合。

    <div id="a" style="background-image: url(img.jpg)"></div>
    
    #a{
        background-color: #ff1374;
        background-blend-mode: luminosity;
        transition: .5s background-color; // 对其背景颜色使用渐变,改变背景色就能实现渐变效果。
    }
    

    这种方法的缺点是图片变成了背景图,在语义上不是一张图片了,而且尺寸大小要在CSS中写死。

    相关文章

      网友评论

          本文标题:17、染色效果

          本文链接:https://www.haomeiwen.com/subject/curuattx.html