美文网首页
使用CSS和DataURI来添加杂色滤镜效果

使用CSS和DataURI来添加杂色滤镜效果

作者: 罗罗磊磊 | 来源:发表于2013-08-18 16:43 被阅读529次
    css-noisecss-noise

    前几天在codewall上看到一篇“CSS Background Noise”的文章,用css+DataURI来实现给html元素添加杂色效果,可以在不增加http请求的情况下,实现不错的杂色效果。自己跟着实践了一下,在这里也就按照原文的步骤,自己翻译加整理实践,分享给大家。

    首先放Demo ,图文无关,仅仅是演示而已,css源码请参考 CSS Code SNIPPET

    如何使用它?

    最简单的方法就是把上面的CSS代码复制到你的css中,然后给你要加杂色的html元素加上 class=”noise” 就好

    原理

    长话短说,看了源码大家应该就能get到,我们首先使用photoshop生成一个50px * 50px的有杂色的半透明png图(非必须,可直接复制dataURI源码),然后通过转换工具将这个png图片转化为 dateURI,然后在css中,设置一个.nosie类,在其中的background-image属性中使用dataURI 。

    对于如何实现不同的元素滤镜效果,我们使用到了 :before 伪选择器和 opacity 透明度属性,同时,通过设置 .noise 的 z-index 堆叠顺序,.noise 杂色在覆盖所有的背景颜色和图片的同时,不会覆盖住元素的内容。

    最关键的是,上面涉及到的所有属性都是CSS2.1而不是CSS3,所以浏览器兼容性方面不存在太大的问题,哪怕某些浏览器不支持,最多就是不显示nosie杂色而已。

    为什么使用它?

    在网页设计中使用一定数量的杂色可以使得网页元素更加有质感 (英文作者写这篇文章的时候是2011年,现在是 flat 扁平化大行其道)。一般来说,我们可以通过直接使用图片来实现效果,可是这也意味着我们必须使用 phtooshop ,并且修改起来挺不方便,对于前端优化来说,也额外增加了HTTP请求。

    说完了上面的,那使用css+dataURI来实现添加杂色质感的优点就显而易见了:纯css+html,小文件(往往5k不到),还能较好地控制和修改。

    自己动手,丰衣足食

    你可以直接使用我们的dataURI来作为杂色模板,当然,你也能自己做一个,在 photoshop 里根据自己的需求和喜好调整透明度,杂色值等等。

    一.创建杂色模板图片

    1.photoshop



    创建一个50px*50px的画布(根据作者实践,发现其他大于50px的图片都会导致最终URI字符过大导致优势不那么明显)。

    2.创建一个新的图层,使用50%灰色填充(编辑>填充)。


    3.应用杂色滤镜(滤镜>杂色>添加杂色),数量区间5~6%为佳。


    4.增加杂色对比度,可以通过添加一个图层模板,调整亮度对比度.


    5.降低杂色层的透明度(可以通过把已经有的两个图层加入一个新组,然后降低组的透明度值)


    7.保存输出为PNG-24格式,对于图片格式的相关知识,建议大家可以阅读一下一淘的《PNG的秘密—— 一淘前端分享会》。

    二.优化PNG图片

    最终我们生成的png文件大概有8kb的大小,对于前端工程师来说,节省每一kb文件大小都是有意义的,我使用的是 mac 上的 ImageOptim 这个软件,通过优化压缩,最后我们获得了一个4kb大小的文件。

    三.将图片转换成DATA URI

    在这里,我们使用了一个在线的转换服务“dopiaza.org”,上传文件,转换。


    四.比较一下DATA URI和原图像的大小

    这时候,别高兴得太早,再确认一下,看看生成出来的data URI的字符大小有多少,在这里推荐使用“bytesizematters”在线查看文本大小,如果字符大小比原来的png图片大小还大,那优化就得不偿失。经过比较,我们发现dataURI进一步压缩到了2.05kb。

    #######浏览器支持

    Internet Explorer 8+, FireFox 3.5+, Chrome 1+, Safari 4+, Opera 9+

    其他

    实际上也可以通过同样的原理,实现其他常用的纹理效果:如纸张、石头、布料等等效果,大家也可以实践一下,看看效果如何。

    本文原文地址罗磊的独立博客<使用CSS和DataURI来添加杂色滤镜效果>

    相关文章

      网友评论

          本文标题:使用CSS和DataURI来添加杂色滤镜效果

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