CSS filter中有什么用
通用样式,设置毛玻璃元素的大小、圆角等基本样式:
.glass{ height:300px; width:300px; border:1pxgroove#EFEFEF; border-radius:12px; background:rgba(242,242,242,0.5); box-shadow:00.3px0.7pxrgba(0,0,0,0.126), 00.9px1.7pxrgba(0,0,0,0.179),01.8px3.5pxrgba(0,0,0,0.224), 03.7px7.3pxrgba(0,0,0,0.277),010px20pxrgba(0,0,0,0.4); }
filter: blur
方法,给元素添加了一个 ::before
伪类设置 blur
方法并将其置于底层实现毛玻璃效果。
.glass-by-filter{ z-index:1; box-sizing:border-box; position:relative; } .glass-by-filter::before{ content:""; position:absolute; top:0;right:0;bottom:0;left:0; z-index:-1; background:inherit; filter:blur(10px); }
backdrop-filter: blur
直接在元素上添加 blur
方法实现毛玻璃效果。
.glass-by-backdrop-filter{ backdrop-filter:blur(10px); }
实现效果如下图所示(左:filter
、右:backdrop-filter
):
阅读扩展:毛玻璃边框效果:https://css-tricks.com/blurred-borders-in-css
艺术照!甚至可以实现简易版 insatagram
复古、版画、油画、漫画、液化、老照片、性冷淡、莫兰迪、赛博朋克、旺达幻视风格通通都可以实现!
通过结合使用 filter
的所有方法,可以搭配出任意自己想要的效果。以下是一个简单的 filter
方法调节器,可以调整每个方法的值,同时实时展示图片的滤镜效果。如下图所示。
页面主要代码如下,控制区 #imageEditor
是一个 form
表单,表单每一行分别控制一种filter方法的值,展示区 #imageContainer
内部包含一个 img
元素,产生的 filter
滤镜作用在该元素上。
Grayscale
Blur
Exposure
Contrast
HueRotate
Opacity
Invert
Saturate
Sepia ![]()
functioneditImage(){ vargs=$("#gs").val();//grayscale varblur=$("#blur").val();//blur varbr=$("#br").val();//brightness varct=$("#ct").val();//contrast varhuer=$("#huer").val();//hue-rotate varopacity=$("#opacity").val();//opacity varinvert=$("#invert").val();//invert varsaturate=$("#saturate").val();//saturate varsepia=$("#sepia").val();//sepia $("#imageContainerimg").css( "filter",'grayscale('+gs+ '%)blur('+blur+ 'px)brightness('+br+ '%)contrast('+ct+ '%)hue-rotate('+huer+ 'deg)opacity('+opacity+ '%)invert('+invert+ '%)saturate('+saturate+ '%)sepia('+sepia+'%)' ); $("#imageContainerimg").css( "-webkit-filter",'grayscale('+gs+ '%)blur('+blur+ 'px)brightness('+br+ '%)contrast('+ct+ '%)hue-rotate('+huer+ 'deg)opacity('+opacity+ '%)invert('+invert+ '%)saturate('+saturate+ '%)sepia('+sepia+'%)' ); } //当input值发生变化时即时应用滤镜 $("input[type=range]").change(editImage).mousemove(editImage);
现在只是实现了滤镜的实时预览,后续待实现功能包括支持复杂的 svg
滤镜模版、导出下载等,完成这些步骤,以后照片添加滤镜再也不用下载其他 APP
了。实例完整版代码:https://codepen.io/dragonir/pen/abJmqxM
节省空间,提高网页加载速度
实践证明,同一图片减小亮度和对比度及色相饱和度之后的体积与原图相比,可以减小很大一部分体积空间 2M
左右的图片经过弱化后保存,就可以压缩到 1M
左右。在网页中我们可以使用经过 弱化
的图片,然后通过 CSS filter
将其还原。这样就可以达到压缩资源体积,提升网页加载速度、提高用户体验的目的。
具体操作可阅读以下教程:
对比度交换技术:使用
CSS filter
提高图像性能https://css-tricks.com/contrast-swap-technique-improved-image-performance-css-filters
兼容性
从 caniuse
查询结果可以看出,css filter
属性在现代浏览器中的支持性已经很好了,除了 IE
浏览器之外,其他浏览器中大多可以正常使用,必要时可添加浏览器内核前缀。但是官网也有以下3个issue 提示,相信后续随着浏览器的升级,这些问题也会被逐步修复:
在 Safari 浏览器中,如果子元素具有动画效果,则不会被应用滤镜。
目前没有浏览器支持
drop-shadow
滤镜的spread-radius
方法。在
Edge
浏览器中如果元素或子元素被设置了负值z-index
,则无法应用滤镜。
总结
本篇文章只是简单列举了几种使用 CSS filter
常用的页面效果,其实 filter
的每一种内置方法都可以有无限可能的扩展应用,如 invert
反转色同样也可以应用到 hover
效果上、调整网页sepia
褐色值可以实现护眼效果等。只要发挥想象力和创造力,filter
都可以在实践中得到很好的应用。
以下一些例子就是很好的应用,大家有兴趣可以拓展阅读学习:
毛玻璃效果 https://codepen.io/KazuyoshiGoto/pen/nhstF
破碎玻璃效果 https://codepen.io/bajjy/pen/vwrKk
使用filter实现的hover效果 https://codepen.io/nxworld/details/ZYNOBZ
反色按钮 https://codepen.io/monkey-company/pen/zZZvRp
老照片 https://codepen.io/dudleystorey/pen/pKoqa
高级版filter编辑器:https://codepen.io/stoumann/pen/MWeNmyb
最后附上一张用上面滤镜编辑器调出来的 复古莫兰迪色性冷淡油画效果
滤镜图片。(哇塞,这也太哇塞了吧,CSS
绝绝子 yyds
)
感谢各位的阅读!关于“CSS filter中有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!