CSS3 filter 模糊滤镜的应用

 

在segmentfault上回答过的一个问题,如何将网页CSS背景图高斯模糊且全屏显示
当时没有深入了解,只觉得滤镜应该只是应用于图片上的。而且各大网站的demo也清一色的图片加滤镜效果。

直到不久前进入nodejitsu的介绍页面,点击登录按钮之后出现弹窗,看到mask下面的模糊效果。

这不科学呀,心理活动如下:
这肯定是canvas实现的=>不对,难道现在不借助chrome extension接口就可以截取可见区域的图像数据=>那就是预先处理好模糊后的图片在弹窗时出现=>不对,国外工程师没这么蛋疼=>莫非是CSS3效果,而且是我不了解的=>打开源码,mask层没什么特殊的css3属性呀=>倒是body上有个

1 body {
2 -webkit-backface-visibility: hidden;
3 }

=>而且比正常状态下多了modal-active属性,可惜该类在body上没有style,再往后面查,最后发现了magic code!

1 .modal-active .row {
2 -webkit-filter: blur(3px);
3 -moz-filter: blur(3px);
4 -o-filter: blur(3px);
5 -ms-filter: blur(3px);
6 filter: blur(3px);
7 }

这里不讲 CSS3 滤镜的基本资料,可以参考:

  • http://www.qianduan.net/what-is-webkit-filter.html
  • https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html

废话太多了,说明一些问题:

为什么不加在BODY上

你已经想到了吧,直接加到body上就会出现下面的样子。效果很逆天,可惜连表单也成天书了。当然也不能加到遮罩上,因为内容区域不在遮罩里。

应该怎么处理

为每个大的分割区域加个共同的类名,如.row,最后在body上统一加上blur样式。实际按照一般情况可能就是header,wrap和footer了。
当然也可以#header,#wrap,#footer {/* code */}

性能问题

看这篇文章 CSS filter effects get GPU-accelerated in Chrome

The feature first landed in WebKit last year and has been making its way into Web browsers. The feature was supported out of the box in Chrome 19, which was released last month, but it’s about to get a whole lot better. In recent Chromium builds, the filter effects are now offloaded to the GPU. This support for hardware-accelerated rendering will boost the performance of filter effects, making it practical to use in a wider range of scenarios.

Google highlighted the GPU support in an entry posted this week in the official Chromium blog. According to Google software engineer Stephen White, the performance of CSS filter effects in Chrome has been elevated to the point where it can now be used efficiently with animations or applied to an HTML5 video element.

英文水平不高就不翻译了,主要是说启用硬件加速后即使对视频(HTML5 video)使用滤镜也能流畅观看了。实际上比较疑惑的问题是css3属性如box-shadow,border-radius等等使用多了会不会有性能的问题?留待研究。

-webkit-backface-visibility 的作用

可以看这里:

  • http://www.never-online.net/blog/article.asp?id=323
  • http://stackoverflow.com/questions/3461441/prevent-flicker-on-webkit-transition-of-webkit-transform

    http://stackoverflow.com/questions/2946748/iphone-webkit-css-animations-cause-flicker

解释一下,在用position:absulote+zindex!=0时用transform会偶尔出现页面会闪的现象,解决方法有三:

  • -webkit-backface-visibility: hidden;
    -webkit-perspective: 1000;
    该方法对于sprite图无效。

  • body {-webkit-transform:translate3d(0,0,0);}

  • .no-flick{-webkit-transform:translate3d(0,0,0);}

比较多使用的解决方法是 -webkit-backface-visibility: hidden;

关于-webkit-backface-visibility有兴趣查看官方文档和上面的链接。

例子

刚好今天看到一个叫一搜的网站,看下前后的对比,效果还是不错的。

结论

滤镜效果不只能用于图片上,普通的元素包括DOM和视频(HTML5 video)也能使用。目前只有Chrome 18.0.976.0 (currently canary), Webkit nightly支持该属性。作为渐进增强还是可以使用的,和webkit speech一样,代码只有几句,何乐而不为?

其他

nodejitsu网站值得学习的还有很多,遮罩的fadeIn和弹窗的bouncedown效果都是使用css3的animation来实现的,当然也没有看到jQuery这个大块头。看他们网站的css可以找到不少值得学习的地方。

CSS3 filter 模糊滤镜的应用的更多相关文章

  1. CSS3 filter:drop-shadow滤镜与box-shadow区别应用 抄的

    CSS3 filter:drop-shadow滤镜与box-shadow区别应用 这篇文章发布于 2016年05月18日,星期三,01:07,归类于 css相关. 阅读 5777 次, 今日 12 次 ...

  2. 【转载】CSS3 filter:drop-shadow滤镜与box-shadow区别应用

    文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/wordpress/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=5 ...

  3. CSS3 Filter详解(改变模糊度 亮度 透明度等方法)

    CSS3 Filter(滤镜)属性提供了提供模糊和改变元素颜色的功能.CSS3 Fitler 常用于调整图像的渲染.背景或边框显示效果. -webkit-filter是css3的一个属性,Webkit ...

  4. 巧用 CSS3 filter(滤镜) 属性

    原文链接:CSS3 filter(滤镜) 属性 效果预览 filter: grayscale(100%); 定义和使用 filter 属性定义了元素(通常是<img>)的可视效果(例如:模 ...

  5. [转]CSS3 Filter的十种特效

    最近到处看到有人在说CSS3的filter一直没有时间自己去测试这效果.今天终于抽出时间学习这个CSS3的Filter.不整不知道呀,一整才让我感到吃惊,太强大了.大家先来看个效果吧: 我想光看上面的 ...

  6. css3图片模糊过滤效果

    css3图片过滤效果,鼠标放上后其它图片模糊,鼠标所在位置的图片是清淅的,有效索引出当前的图片,对图片的模糊处理是本特效的亮点,你完全可以将模糊的效果应用于其它的图片特效中,你同样也可借此代码研究一下 ...

  7. css3图片模糊过滤特效

    体验效果:点击这里查看效果 代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  8. 运用HTML5+CSS3和CSS滤镜做的精美的登录界面

    原始出处http://chenjinfei.blog.51cto.com/2965201/774865 <!DOCTYPE HTML> <html> <head> ...

  9. filter 图片滤镜的各种设置

    filter 图片滤镜 给当前元素加滤镜_改变它的明亮度 定义:filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度).作用在图片上或元素上.div{ },或 d ...

随机推荐

  1. MethodInterceptor-方法拦截器

    MethodInterceptor 方法拦截器,也就是aop拦截方法 1.使用示例 public interface MethodInterceptor extends Interceptor { O ...

  2. Mysql事务隔离级别和锁机制

    一.Spring支持四种事务隔离级别: 1.ISOLATION_READ_UNCOMMITTED(读未提交):这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据. 2.ISOLAT ...

  3. jQuery入门——注册事件

    下面举例介绍注册事件的几种方法: 以光棒效果为例 1.bind注册: <!DOCTYPE html> <html> <head> <meta charset= ...

  4. 1.谈谈对Java平台的理解

    1.谈谈你对Java平台的理解 Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“一次编译,到处运行”(Compile once,run anywhere),能够非常容易地获取跨 ...

  5. (转)VSCode调试go语言出现:exec: "gcc": executable file not found in %PATH%

    原文:https://www.cnblogs.com/zsy/p/5958170.html 1.问题描述 由于安装VS15 Preview 5,搞的系统由重新安装一次:在用vscdoe编译go语言时, ...

  6. java高并发系列 - 第6天:线程的基本操作

    新建线程 新建线程很简单.只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可. Thread thread1 = new Thread1(); t1.start(); 那么 ...

  7. bzoj1854 游戏题解(二分图/并查集)

    1854: [Scoi2010]游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 5547  Solved: 2229[Submit][Status] ...

  8. Hamcrest的简单应用

    import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import java.util.ArrayList; ...

  9. jmeter_遍历转换浮点时间戳

    概述 近期帮朋友解决了一个浮点时间戳转换的问题,在这里记录一下. 具体场景是有一个十位浮点时间戳的list,需要遍历转换为当前的标准时间. list如下: 实现步骤 实现步骤其实很简单,只需要一个fo ...

  10. UVA514 铁轨 Rails:题解

    题目链接:https://www.luogu.org/problemnew/show/UVA514 分析: 入站序列是1-n,入站后判断如果等于出站序列的当前值,则直接出站.否则就在栈里待着不动.模拟 ...