当前位置: 首页 > Web前端 > HTML

神奇的用滤镜搭建高级毛玻璃渐变背景

时间:2023-03-28 18:49:27 HTML

最近我们内部的一个低代码平台完成上线了,它的首页是这样的(数据脱敏):当然,这不是一个项目并且不是本文的重点。主要看这个页面的背景,一张渐变的背景图,带有磨砂(磨砂玻璃)纹理效果,看起来比较高级。如果把页面的内容元素剥离,只剩下背景,大概是这样的:一开始是打算把图片切掉的,但是仔细想想,这个效果其实可以很容易的用CSS。本文讨论:如何使用CSS制作渐变背景图,并带有如上图的磨砂(磨砂玻璃)纹理效果如何使用CSS-doodle工具批量生成效果图,并实现渐变图带动画效果。以上背景效果看似复杂,其实很简单。就是:CSS中的多块不规则渐变背景+高斯模糊蒙版,即借助background+backdrop-filter:blur()即可实现。去掉上面叠加的GaussianBlurmask,后面的元素其实非常简单明了。可能是这样的:下面是一个简单的代码,我们用3个div实现3个渐变图,然后用clip-path把每个图随机裁剪成不规则的多边形:

.g-polygon{位置:绝对;opacity:.5;}.g-polygon-1{//定位代码,容器高宽任意background:#ffee55;clip-path:polygon(010%,30%0,100%40%,70%100%,20%90%);}.g-polygon-2{//定位代码,容器高宽可选背景:#E950D1;clip-path:polygon(10%0,100%70%,100%100%,20%90%);}.g-polygon-3{//定位代码,容器高宽任意background:rgba(87,80,233);clip-path:polygon(80%0,100%70%,100%100%,20%90%);}使用backdrop-filter实现高斯模糊蒙版接下来最关键的一步是使用backdrop-filter实现一个高斯模糊蒙版。只是叠加在上面的元素之上,最关键的代码行backdrop-filter:blur(150px).g-bg::before{content:"";位置:固定;顶部:0;左:0;底部:0;右:0;背景滤镜:模糊(150px);z-索引:1;}}这样,我们就实现了如上图所示的带有磨砂玻璃纹理效果的渐变背景图片:录制的Gif图片看起来有点模糊,可以戳这里点进DEMO查看--CodePenDemo--磨砂玻璃背景效果注意这里使用的是backdrop-filter:blur()而不是filter:blur(),如果你对这两个滤镜感兴趣,如果对使用选项还有疑惑,可以看看这篇文章我的解释过滤器和背景过滤器之间的异同。使用CSS-doodle工具批量生成这个效果。简单了解原理后,我们就可以使用CSS-doodle尝试批量生成这个效果了。CSS-doodle是一个基于Web-Component的库。让我们可以快速创建基于CSSGrid布局的页面,并提供各种方便的指令和功能(随机、循环等),让我们通过一套规则获得不同的CSS效果。有兴趣的可以点击官网了解一下——CSS-doodle代码非常简单易懂。它是随机场景中的几个不同大小、不同位置、不同颜色、不同形式的图形::doodle{@grid:1x8/100vmin;}@place-cell:中心;宽度:@rand(40vmin,80vmin);高度:@rand(40vmin,80vmin);变换:平移(@rand(-200%,200%),@rand(-60%,60%))比例(@rand(.8,1.8))倾斜(@rand(45deg));剪辑路径:多边形(@r(0,30%)@r(0,50%),@r(30%,60%)@r(0%,30%),@r(60%,100%))@r(0%,50%)@r(60%,100%)@r(50%,100%)@r(30%,60%)@r(60%,100%)@r(60%,100%)@r(0,30%)@r(60%,100%));背景:@pick(#f44336,#e91e63,#9c27b0,#673ab7,#3f51b5,#60569e,#e6437d,#ebbf4d,#00bcd4,#03a9f4,#2196f3,#009688,#5ee463,#f8e645,#ffc107,#ff5722,#43f8bf);opacity:@rand(.3,.8);上面的代码会随机生成这样一个图案(GIF看不到鼠标点击的效果,每次切换都是点击页面手动switching):好了,有了mask,再来看效果,我们已经可以批量生成上面的背景效果了:如果需要的话,加上hue-rotate和简单的displacement,我们甚至可以让这个渐变背景动画动起来起来让它更生动://同上...position:relative;顶部:@rand(-80%,80%);左:@rand(-80%,80%);动画:colorChange@rand(6.1s,16.1s)无限@rand(-.5s,-2.5s)线性交替;@keyframescolorChange{100%{左:0;顶部:0;滤镜:色调旋转(360deg);}}}}}}}}}}}}}}}}}}这样我们就得到了带动画渐变背景的毛玻璃:GIF截图效果较差,完整代码和效果体验可以点这里--CodePenDemo--CSS-doodlePureCSSBackgroundEffect终于做好了,本文到此结束,希望这篇文章能帮到你:)如果你想获取最有趣的CSS资讯,不要错过我的公众号——iCSS前端奇闻如果大家有什么问题或者建议,可以多交流。原创文章文笔有限,知识匮乏。如果文章中有任何不准确的地方,请告诉我。