译自:[http://net.tutsplus.com/tutorials/html-css-techniques/say-hello-to-css3-filters/](http://net.tutsplus.com/tutorials/html-css-techniques/say-hello-to-css3-filters/)
Jeffrey Way于2011年12月22日
译者:蒋宇捷(转载请标明出处-[http://blog.csdn.net/hfahe](http://blog.csdn.net/hfahe))
------
教程详细内容
•主题:CSS滤镜
•可用性: [Webkit每晚构建的版本](http://tools.google.com/dlpage/chromesxs)
•酷炫程度:100
[**观看演示**](http://jsbin.com/uziyih)
本月初公布了一个新的规范-[滤镜效果1.0](https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html)。 它提出了一些令人兴奋的新特性,我们可以使用它在浏览器中来创建Photoshop般的效果。 更妙的是, [Webkit](http://tools.google.com/dlpage/chromesxs)已经在每晚构建的版本中添加了支持!
**根据此规范...**
“滤镜效果是一个图形化的操作,它被应用到一个元素上以绘制到页面文档里。它是一种基于图像的效果,因为它接受零个或多个图像作为输入,指定若干效果的具体参数,然后产生图像作为输出。“
现在,至少在这一点上,我并不认为可以告诉你这些新滤镜可能相关的一切。 我自己仍然还在学习中。 这就是说,我将向你展示我们如何在新的项目中使用一些新的滤镜,然后希望我们可以集思广益,相互学习和借鉴。现在让我们开始吧。
滤镜通常和图像结合(虽然它们也可以应用在视频上)。 因此在下面的演示里,我们将使用Nettuts +的标志作为输入。
~~~
<img src="http://d2o0t5hpnwv4c1.cloudfront.net/nt-logo.jpg" alt="Nettuts+ Logo">
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a29fd2070.jpg)
*“请谨记:这些滤镜在WebKit浏览器的公共版本中尚不可用。现在可以下载[Chrome Canary](http://tools.google.com/dlpage/chromesxs)用于观看这些演示。“*
**色相旋转**
曾经和Photoshop色相/饱和度面板打过交道吗? 现在好了,你可以在浏览器中应用它。
~~~
img {
-webkit-filter: hue-rotate(50deg);
}
~~~
如果对这个度数值如何设定感到困惑,可以试想一下一个色轮。 您指定的度数值决定了该轮停止之处。 这意味着 0deg将不会有任何效果,而50deg会相应的转动拨盘。
在这种情况下,Nettuts +的标志将采取ISH蓝光色调。
![](https://box.kancloud.cn/2016-08-09_57a9a29fe618a.jpg)
[观看演示](http://jsbin.com/ohuhek)
或者如果你希望图像不断的改变颜色。 可能在真实项目中,色彩过渡会微妙得多,但这个演示中我们将简单表示。
~~~
img {
-webkit-animation: adjustHue 1s alternate infinite;
}
@-webkit-keyframes adjustHue {
0% { -webkit-filter: hue-rotate(30deg); }
50% { -webkit-filter: hue-rotate(60deg); }
100% { -webkit-filter: hue-rotate(90deg); }
}
~~~
相当简单。 [查看演示](http://jsbin.com/ohuhek/65)
**灰度**
我们过去曾经使用各种hack来在浏览器中实现从黑白色过渡为彩色图像。其中一种技术要求两幅图像叠在彼此之上。 另一种选择是使用Canvas。 现在我们可以使用grayscale滤镜。
~~~
img {
-webkit-filter: grayscale(100%);
}
~~~
当使用以百分比表示的grayscale函数时,自己可以考虑一下,“在0至100%之间“,我想要这个图片以多深的灰度来表示?
![](https://box.kancloud.cn/2016-08-09_57a9a2a00799b.jpg)
[观看演示](http://jsbin.com/ohuhek/2)
在和CSS3的transitions配合使用时,我们可以表现一个非常干净漂亮的鼠标悬停效果。
~~~
img {
-webkit-transition: -webkit-filter 1s;
}
img:hover {
-webkit-filter: grayscale(100%);
}
~~~
将来你要提供其他浏览器的前缀,但是现在没有必要。 无需添加Firefox的transitions,因为滤镜目前仅WebKit内核。
[观看演示](http://jsbin.com/ohuhek/3)
**Sepia-棕褐色**
喜欢Instagram Sepia风格的滤镜效果?让我们看看Nettuts+图标的怀旧风格。
~~~
img {
-webkit-filter: sepia(100%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2a01c93d.jpg)
[查看演示](http://jsbin.com/ohuhek/4)
不过通常情况下这个效果将会用到照片上。让我们看看有史以来最伟大的艺术家在Sepia滤镜下的效果。
![](https://box.kancloud.cn/2016-08-09_57a9a2a02fd2e.jpg)
[查看演示](http://jsbin.com/ohuhek/4)
相当完美。
**虚化**
通过设置半径我们可以轻松的在浏览器中虚化一张图片。
~~~
img {
-webkit-filter: blur(2px);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2a049153.jpg)
[观看演示](http://jsbin.com/ohuhek/5)
或将虚化半径加大到50像素。
![](https://box.kancloud.cn/2016-08-09_57a9a2a05d979.jpg)
[观看演示](http://jsbin.com/ohuhek/14)
**亮度**
我们使用brightness滤镜来指定输入图像呈现出的亮度。
~~~
img {
-webkit-filter: brightness(15%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2a06dd95.jpg)
[观看演示](http://jsbin.com/ohuhek/6)
将100%考虑成基准点。brightness(100%)保持原图不变。 然而当我们降低这个百分比时,图像将不断变暗。
*“不要忘记:你可以把所有这些滤镜叠加起来。”*
~~~
img {
-webkit-filter: brightness(60%) sepia(100%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2dc7fd77.jpg)
[观看演示](http://jsbin.com/ohuhek/7)
**对比度**
现在我们可以很容易地调整图像的对比度。
~~~
img {
-webkit-filter: contrast(200%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2dc95862.jpg)
[观看演示](http://jsbin.com/ohuhek/9)
[](http://jsbin.com/ohuhek/9) 再次将100%考虑成基准点。 我们可以通过增加或减少这个值来调整图像的对比度。 根据规范,设置为0%将会使图像全黑。你可能期望-webkit-filter: brightness(0%)有类似的效果,不过我看到的是更多的暗灰色。
~~~
img {
-webkit-filter: contrast(0%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2dcacc3a.jpg)
[观看演示](http://jsbin.com/ohuhek/8)
现在我们将比例提高到2000%。
~~~
img {
-webkit-filter: contrast(2000%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2dcc0771.jpg)
[观看演示](http://jsbin.com/ohuhek/10)
为了好玩,让我们创建一个Nettuts +标志跳动的矩阵版本。 我们将结合CSS3动画和滤镜。
~~~
img {
-webkit-animation: bluePill 1s alternate infinite;
}
@-webkit-keyframes bluePill {
0% { -webkit-filter: contrast(2000%); }
100% { -webkit-filter: contrast(100%); }
}
~~~
[观看演示](http://jsbin.com/ohuhek/12)
**反转**
Mac用户请按下Control + Option + Command + 8 。请注意它是如何反转屏幕显示的(当然你可以注意到)。每当深夜当在电脑上阅读,眼睛酸痛时我就采用这一招。
将invert滤镜设置为100%,就可以达到相同的效果。
~~~
img {
-webkit-filter: invert(100%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2dcd52da.jpg)
[观看演示](http://jsbin.com/ohuhek/13)
请注意,0%会保持原图不变。
现在,从技术角度来说,你可以在网站的body元素上应用这个滤镜。 然而你会发现页面显示相当慢,并且无法上下滚动。 除非是为了娱乐,否则不要这样做。
![](https://box.kancloud.cn/2016-08-09_57a9a2dce8268.jpg)
**饱和度**
除了设置grayscale(100%)之外,我们还可以将图像去饱和度来达到相似的效果。
在这种情况下,100%是不变的状态,你可以增加或减少这个值。 因此,减少到0%将会从图像中删除所有的颜色。
~~~
img {
-webkit-filter: saturate(0%);
}
~~~
![](https://box.kancloud.cn/2016-08-09_57a9a2dd128d0.jpg)
[查看演示](http://jsbin.com/ohuhek/15)
或者将值增大到700%:
![](https://box.kancloud.cn/2016-08-09_57a9a2dd24c01.jpg)
[观看演示](http://jsbin.com/ohuhek/16)
**这是现在所有的内容**
请继续在下周关注这篇文章。 由于这些技术仍然非常新,我们都需要时间来弄清楚如何使用它们。 当我了解[更多内容](https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html)时我会保持更新这篇文章。
- 前言
- AutoPager的简单实现
- 利用CSS3特性巧妙实现漂亮的DIV箭头
- IE9在Win7下任务栏新特性简介
- 浏览器九宫格的简单实现
- Raphael js库简介
- 使用CSS3构建Ajax加载动画
- 用CSS3创建动画价格表
- 用CSS3实现浏览器的缩放功能
- 用纯CSS3实现QQ LOGO
- 用CSS3创建旋转载入器
- 使用Javascript开发移动应用程序
- 用HTML5创建超酷图像灰度渐变效果
- 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)
- 仅用CSS创建立体旋转幻灯片
- 如何创建跨浏览器的HTML5表单
- 用CSS3实现动画进度条
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas动画实例
- 谈HTML5和CSS3的国际化支持
- 实现跨浏览器的HTML5占位符
- 前端开发必备工具:WhatFont Bookmarklet-方便的查询网页上的字体
- 使用HTML5和CSS3来创建幻灯片
- HTML5之美
- 如何使用HTML5创建在线精美简历
- 以小见大、由浅入深-谈如何面试Javascript工程师
- 快速入门:HTML5强大的Details元素
- 用CSS3实现图像风格
- HTML5视频字幕与WebVTT
- 用纯CSS3实现Path华丽动画
- 用3个步骤实现响应式网页设计
- 遇见CSS3滤镜
- 关于CSS3滤镜的碎念
- 用纯CSS3绘制萌系漫画人物动态头像
- CSS3新的鼠标样式介绍
- 用HTML5献上爱的3D玫瑰
- 对HTML5 Device API相关规范的解惑
- 如何使用HTML5实现拍照上传应用
- 2012第一季度国外HTML5移动开发趋势
- HTML5新特性:范围样式
- 百度开发者大会-《用HTML5新特性开发移动App》PPT分享
- Chrome 19对于HTML5最新支持的动态:电池状态API,全屏API,震动API,语音API
- 遇见Javascript类型数组(Typed Array)
- 用HTML5 Audio API开发游戏音乐
- 用HTML5实现人脸识别
- 用Javascript实现人脸美容
- Chrome 20对于HTML5最新支持的动态:颜色输入,网络信息API,CSS着色器
- 用HTML5实现手机摇一摇的功能
- 用HTML5实现iPad应用无限平滑滚动
- 用非响应式设计构建跨端Web App
- 了解SVG
- HTML5图像适配介绍
- HTML5安全:内容安全策略(CSP)简介
- HTML5安全:CORS(跨域资源共享)简介
- 用CSS3 Region和3D变换实现书籍翻页效果
- 谈谈移动App的思维误区
- Chrome新特性:文件夹拖拽支持
- 《关注HTML5安全》
- HTML5安全风险详析之一:CORS攻击
- HTML5安全风险详析之二:Web Storage攻击
- HTML5图像适配最新进展:响应式图片规范草案
- HTML5移动Web App相关标准状态及路线图
- HTML5安全风险详析之三:WebSQL攻击
- Chrome引入WebRTC支持视频聊天App
- HTML5安全风险详析之四:Web Worker攻击
- HTML5安全风险详析之五:劫持攻击
- HTML5安全风险详析之六:API攻击
- HTML5安全攻防详析之七:新标签攻击
- 在iOS Safari中播放离线音频
- 使用WebRTC实现远程屏幕共享
- Firefox、Android、iOS遇见WebRTC
- HTML5光线传感器简介
- HTML5安全攻防详析之八:Web Socket攻击
- HTML5安全攻防详析之完结篇:HTML5对安全的改进
- 激动人心!在网页上通过语音输入文字 - HTML5 Web Speech API介绍
- Web滚动性能优化实战
- 用CSS3设计响应式导航菜单
- 用HTML5构建高性能视差网站
- 漫谈@supports与CSS3条件规则
- HTML5下载属性简介
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(一)
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(二)
- 趋势:Chrome为打包应用提供强大新特性
- 从HTML5移动应用现状谈发展趋势
- 基于HTML5的Web跨设备超声波通信方案