记录:CSS3 模糊效果

html-css014

记录:CSS3 模糊效果,第1张

最近在写活动页面遇到一个效果,在黑色透明蒙层后面的元素要有模糊,毛玻璃的效果,最初想到的就是 filter: blur(2px) ,直接在元素上使用,但是整个子元素都被模糊了,而且蒙层的背景并没有效果,经过百般搜索和尝试,发现还有一个属性可以实现专门针对有透明度的元素做模糊的效果,而且还不会影响到子元素的展示,它就是 backdrop-filter: blur(3px) ,完美的实现了设计稿的要求。

下面就来看看这两个属性的区别,遇到的问题以及解决方案。

filter CSS属性将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像,背景和边框的渲染。

想要模糊图像或者某个不带透明度的元素,可以直接在元素上加 filter: blur(2px) ,如果这个元素下面有子元素,这样写子元素也会被模糊,解决方法是使用伪元素加定位效果实现:

backdrop-filter CSS 属性可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。 因为它适用于元素 背后 的所有元素,为了看到效果,必须使元素或其背景至少部分透明。

所以给蒙层的后面添加模糊的效果,可以直接在蒙层元素上使用 backdrop-filter: blur(2px)即可。

这两个属性的使用可以详细的参考 mdn上的描述:

backdrop-filter

filter

于是稍作研究下,在此记录下: 当然,达到透明,很多一般使用三种方式: 1、直接使用透明图片,这个确实比较直接省事,不过往往需要再制作图片,个人认为,可维护性不好 2、使用如下代码设置透明度,可是你会发现这种方式不能对其子节点的元素设置不透明 代码如下: filter: alpha(opacity = 50)-moz-opacity: 0.5-khtml-opacity: 0.5opacity: 0.53、这种方法仅仅使用简短的代码,即可以实现设置透明度,也可以实现其中的文字以及节点中的元素设置不透明 首先需要先对需要透明的层设置如下样式: 代码如下: background: rgba(255,255,255,0.5) none repeat scroll !important/* 确保火狐等浏览器的透明度,同事达到设置其子节点中的元素不透明 */ background:#ffffilter: alpha(opacity = 50)/* 为IE浏览器设置滤镜来达到透明的效果 */ 然后对其子节点设置如下样式: 代码如下: position: relative/* 用来设置IE浏览器中其子节点中的元素不透明 */ 如此,就可以实现设置透明度,也可以实现其中的文字以及节点中的元素设置不透明了。 css设置透明层 用下面的样式表定义你的层 .alpha { filter: Alpha(Opacity=50, FinishOpacity=50, Style=0, StartX=0, StartY=0, FinishX=100, FinishY=100} 解释: Opacity=开始的不透明度(100的话就不透明了) FinishOpacity=结束的不透明度(100的话就不透明了) Style=样式,从0开始,1.2.3....有均匀透明啊,放射形状透明啊... StartX=开始透明的X坐标,基本上为图片、层的左上角(0) StartY= 开始透明的Y坐标,基本上也为图片、层的左上角(0) FinishX=结束透明的X坐标,基本上也图片、层的右下(图片、层的宽度) FinishY=结束透明的Y坐标,基本上也为图片、层的右下角(图片、层的高度) 黑白照片 filter: grayX光照片 filter: Xray风动模糊 filter: blur(add=true,direction=45,strength=30)正弦波纹 filter: Wave(Add=0, Freq=60, LightStrength=1, Phase=0, Strength=3)半透明效果 filter: Alpha(Opacity=50)线型透明 filter: Alpha(Opacity=0, FinishOpacity=100, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=140)放射透明 filter: Alpha(Opacity=10, FinishOpacity=100, Style=2, StartX=30, StartY=30, FinishX=200, FinishY=200)白色透明 filter: Chroma(Color=#FFFFFF)降低色彩 filter: grays底片效果 filter: invert左右翻转 filter: fliph垂直翻转 filter: flipv投影效果 filter:progid:dXImageTransform.Microsoft.DropShadow(color=#cccccc,offX=5,offY=5,positives=true)马赛克 filter:progid:dXImageTransform.Microsoft.Pixelate(maxsquare=3)发光效果 filter:progid:dXImageTransform.Microsoft.Glow(color=#cccccc,Strength=5)柔边效果 filter:alpha(opacity=100, finishOpacity=0,style=2

刚好,我曾经做过这个功能,和你分享下。

黑白照片 filter: gray

X光照片 filter: Xray

风动模糊 filter: blur(add=true,direction=45,strength=30)

正弦波纹 filter: Wave(Add=0, Freq=60, LightStrength=1, Phase=0, Strength=3)

半透明效果 filter: Alpha(Opacity=50)

线型透明 filter: Alpha(Opacity=0, FinishOpacity=100, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=140)

放射透明 filter: Alpha(Opacity=10, FinishOpacity=100, Style=2, StartX=30, StartY=30, FinishX=200, FinishY=200)

白色透明 filter: Chroma(Color=#FFFFFF)

降低色彩 filter: grays

底片效果 filter: invert

左右翻转 filter: fliph

垂直翻转 filter: flipv

投影效果 filter:progid:dXImageTransform.Microsoft.DropShadow(color=#cccccc,offX=5,offY=5,positives=true)

马赛克 filter:progid:dXImageTransform.Microsoft.Pixelate(maxsquare=3)

发光效果 filter:progid:dXImageTransform.Microsoft.Glow(color=#cccccc,Strength=5)

柔边效果 filter:alpha(opacity=100, finishOpacity=0,style=2

我的示范代码:

<div id="bgDiv" style="position:absolutetop:0background-color:#777display:nonefilter: Alpha(Opacity=10, FinishOpacity=50, Style=2, StartX=30, StartY=30, FinishX=200, FinishY=200)opacity:0.6left:0z-index:10000"></div>

希望对你有帮助