CSS3 滤镜filter: blur()高斯模糊的应用

html-css060

CSS3 滤镜filter: blur()高斯模糊的应用,第1张

filter 属性定义了元素(通常是img)的可视效果(例如:模糊与饱和度)。

语法:

filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url()

使用效果: 查看demo

demo 是我的GitHub主页,当鼠标放在圆形上面的时候,圆形会旋转,这里主要应用了 animation 属性。而绿色圆形的下面那层投影的模糊效果则是运用了下面这条属性:

而完整卡片又该怎么写呢?

首先是它的 <html>结构:

CSS样式:

圆角背景:

圆形样式:

投影层的样式:

文字的样式:

如此,便可不用一张图,写出这张卡片了。

CSS滤镜

自W3C公布了样式单(CSS)的标准以来,HTML的每一部分开始以元素的形式出现,并且事件开始真正被引入页面,动态HTML成为了人们讨论的热点。实际上,W3C采用的标准即为微软的DOM,也就是说IE4.0可以更好的支持CSS,并且微软对CSS还进行了许多十分有益地探索,Filter就是一个很好的例子。

众所周知,Javascript或Vbscript作为脚本语言,其功能是不完善的,有许多高级语言的功能无法实现,如图象的处理功能。Filter是微软对CSS的扩展,与PhotoShop中的滤镜概念相似,它可以用很简单的方法对页面中的文字特效作出特效处理,静态如阴影、模糊的效果,动态如各种淡入淡出效果。

如果你使用过图形软件的话,视觉滤镜这个概念你一定不会感到陌生。你可以选择一个图形,让计算机对其进行模糊过滤,或者将有些文字或图象反转处理。要想实现这些技巧,你得将需要变化的内容以位图形式输入你的图象处理软件,应用相应的过滤器,然后及其以GIF或JPEG格式发布。

但是生成文字的图象格式会破坏原有文字的存储格式并且会延长下载的时间。生命的一分一秒被消耗在下载的漫长等待之中实在是一种残忍的折磨和享受。但是你需要为你的标题添加一点漂亮的蓝色下落阴影,并且在其四周环绕以红色的光晕。好吧,我们就给它加上一个漂亮的修饰。

有时候当图象下载到客户端时你需要对图象做一些变化,比如加一个移动模糊让其“神经质”地滑过屏幕。不要怕,CSS图象过滤器将帮助你实现你的愿望(但是现在只能在微软IE 4.0上实现这些功能)。

● 1.CSS静态滤镜样式 (filter)(只有IE4.0以上支持)

CSS静态滤镜样式的使用方法:{ filter : filtername( parameters1, parameters2, ...) }

Filter样式 简要说明 支持参数

alpha 设置图片或文字的不透明度 opacity、finishOpacity、style、startX、startY、finishX、finishY、add、direction、strength

blur 在指定的方向和位置上产生动感模糊效果 add、direction、strength

chroma 对所选择的颜色进行透明处理 color

dropShadow 在指定的方向和位置上产生阴影 color、offX、offY、positive

flipH 沿水平方向翻转对象

flipV 沿垂直方向翻转对象

glow 在对象周围上发光 color、strength

gray 将对象以灰度处理

invert 逆转对象颜色

light 对对象进行模拟光照

mask 对对象生成掩膜 color

shadow 沿对象边缘产生阴影 color、direction

wave 在垂直方向产生正弦波形 add、freq、lightStrength、phase、strength

xray 改变对象颜色深度,并绘制黑白图象

以上就是静态滤镜的全部内容,要注意的是CSS是区分大小写的!

● 2.CSS动态滤镜

动态滤镜可以为页面添加动人的淡入淡出、图象转化效果,它可以分为两种blend(混合)和reveal(显示),前者可以使对象渐渐消失或出现,后者提供了24种图象转化的效果。对于动态滤镜的调用除去象在静态滤镜中要定义的滤镜类型,参数等等,还用到脚本语言控制它的状态。

首先,在开始一个动态效果之前,先需要进行装备(Apply),然后播放(Play)动态效果,在动态效果进行中还可以中断动态效果(Stop),以上可以用下面的方法实现:

对象名.filters(滤镜数值).Apply()

对象名.filters(滤镜数值).Play()

对象名.filters(滤镜数值).Stop()

对于滤镜状态的判断可以通过“对象名.filters(滤镜数值).status”判断,该值为0时,表示滤镜未执行,为1时,表示滤镜已经完成,为2时表示滤镜在执行中。

在定义filter时,如上面所提到的,可以有混合(“filter:blendTrans(duration=时间数值)”,duration表示滤镜执行需要的时间,单位为秒)和显示(“filter:revealTrans(duration=时间数值,transition=过渡类型)”,过渡类型为从0-23的数值)两种。

滤镜目前还未被W3C正式承认。滤镜只是微软IE浏览器的组成部分,不能用于Netscape浏览器。制定有关标准的组织正在就此进行讨论,但尚未达成最后定论。在我看来,滤镜是一种非常有趣而且是制作精彩的视觉效果必不可少的一部分。滤镜能节省带宽,而且是你能在制作奇妙的

视觉设计时使用文字格式,而不必先制作庞大的文字位图以取得相同的效果。

但由于这些功能尚未成为HTML的正式组成部分,所以并不是所有的浏览器都能看到这些特色。有些时候,你必须考虑以传统的方式制作相同的效果,当然,你不得不继续将庞大的GIF文件塞到网页之中。