CSS如何实现毛玻璃效果

简介: 写在前面之前在逛一些网站的时候,就经常看见一些图片背景模糊的效果,这样的效果可以使得用户将更多的注意力放在清晰的地方上,可以不经意间引导用户。我就很好奇,这样的一种效果是怎么实现的。恰好这几天周末,顺便弥补一下我拙劣的css知识。通过查找一些资料,我发现这样的效果大致可以使用两种方法来实现:

写在前面

之前在逛一些网站的时候,就经常看见一些图片背景模糊的效果,这样的效果可以使得用户将更多的注意力放在清晰的地方上,可以不经意间引导用户。

我就很好奇,这样的一种效果是怎么实现的。恰好这几天周末,顺便弥补一下我拙劣的css知识。

通过查找一些资料,我发现这样的效果大致可以使用两种方法来实现:

  1. 传统的filter
  2. css3新特性:backdrop-filter

下面我就主要讲述这两种方法的实现。

传统的filter

首先就讲一下比较老一点的方法,filter(过滤),听这名字,就知道里面可以实现功能不仅仅是实现毛玻璃这样的效果。

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

可以看到这个属性里面有很多的功能,其中就包括了模糊的功能,blur(),这个属性可以实现模糊的效果,但是这个属性是不支持IE的,所以如果你的项目需要兼容IE的话,那么这个方法就不适合你了。(但是还好IE已经停止更新了)

filter: blur(10px);
复制代码

那就用一个例子来说明一下这个功能吧。

<div class="test"></div>
复制代码

为了方便,我们只使用一个div盒子

css代码如下:

.test {
    width: 400px;
    height: 200px;
    filter: blur(2px);
    background: url(background.png) no-repeat;
}
复制代码

这个图片地址是我本机的图片地址,所以你们可能看不到效果,但是你们可以自己找一张图片,然后把地址改成你们的图片地址就可以了。

效果如下:

网络异常,图片无法展示
|



为了对比更加明显,加一个没有模糊效果的图片:


网络异常,图片无法展示
|


但是使用这个方法的话,就会有一个问题,就是如果你的图片是一个动态的图片,那么这个模糊的效果就会跟着动态的图片一起动,这样的效果就不是我们想要的了。并且这个方法的模糊效果会影响到子元素,比如我在图片中间放一个盒子(子元素),那么盒子里面的内容也会被模糊掉。

就像这样


网络异常,图片无法展示
|


我在子盒子里面放了1-6的数字,但是数字被模糊掉了,这样的效果就不是我们想要的了。

所以就有了第二种方法实现:

css3新特性:backdrop-filter

这个属性是css3的新特性,所以兼容性不是很好,但是现在的浏览器都已经支持了,所以这个方法还是可以使用的。

backdrop-filter: none|filter|initial|inherit;
复制代码

可以看到这里有四个属性,其中filter就是我们需要的属性,

当然在filter属性里面也有很多的功能,我们只需要用到模糊的功能就可以了,blur()。

<div class="test">
        <div class="child">123456</div>
    </div>
复制代码

然后接下里,就是css代码:

.test {
            width: 1200px;
            height: 800px;
            background: url(background.png) no-repeat;
        }
    .child {
            width: 600px;
            height: 200px;
            position: absolute;
            left: 50%;
            margin-left: -60px;
            top: 50%;
            margin-top: -100px;
            background-color: rgba(255, 255, 255, .7);
            backdrop-filter: blur(10px);
        }
复制代码

首先放一张没有模糊效果的图片:


网络异常,图片无法展示
|



接下来就是效果图:


网络异常,图片无法展示
|


可以很明显得看到,这次我们模糊的知识盒子的背景,并有模糊掉盒子本身的内容,这就是backdrop-filter的优势所在。

总结

这两种方法都可以实现模糊效果,但是第二种方法的兼容性不是很好,所以如果你的项目需要兼容性比较好的话,那么就使用第一种方法,如果你的项目不需要兼容性的话,那么就使用第二种方法。

还有就是第一种毛玻璃效果会影响后面子元素,导致后面子元素也会被模糊掉。所以如果你的项目中有子元素并且不愿意被模糊的话,那么就建议使用第二种方法。

相关文章
|
前端开发 JavaScript 程序员
基于H5+css+JavaScript实现毛玻璃导航栏光闪
基于H5+css+JavaScript实现毛玻璃导航栏光闪
256 0
基于H5+css+JavaScript实现毛玻璃导航栏光闪
|
前端开发
css毛玻璃效果—附:子盒子背景跟随父盒子背景
css毛玻璃效果—附:子盒子背景跟随父盒子背景
css毛玻璃效果—附:子盒子背景跟随父盒子背景
|
Web App开发 前端开发 JavaScript
CSS 奇思妙想 | 全兼容的毛玻璃效果
CSS 奇思妙想 | 全兼容的毛玻璃效果
571 0
CSS 奇思妙想 | 全兼容的毛玻璃效果
|
Web App开发 人工智能 前端开发
css毛玻璃背景的制作
今天早上, 听到有人说拼多多上市, 然后各种黑, 说什么市场倒退了二十年, 然后搬出那英当年的"雾里看花",说这首歌就是在讽刺假货横行~ "雾里看花"代表了一种"朦胧美", 如果你喜欢朦胧美, 那你也可能也会喜欢毛玻璃 "毛玻璃"效果, 本质上是对背...
2513 0
|
前端开发
css毛玻璃效果
#left:before{ position: relative; z-index: -1; filter: blur(20px); background-color: #FFFFFF; } #left{ /*bo...
984 0
|
3天前
|
移动开发 HTML5
HTML5/CSS3粒子效果进度条代码
HTML5/CSS3进度条应用。这款进度条插件在播放进度过程中出现粒子效果,就像一些小颗粒从进度条上散落下来
15 0
HTML5/CSS3粒子效果进度条代码
|
7天前
|
移动开发 前端开发 JavaScript
:掌握移动端开发:HTML5 与 CSS3 的高效实践
:掌握移动端开发:HTML5 与 CSS3 的高效实践
22 1
|
12天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
12天前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS前端技术趋势篇】前端框架(React/Vue/Angular)与HTML/CSS的结合使用
【4月更文挑战第30天】前端框架React、Vue和Angular助力UI开发,通过组件化、状态管理和虚拟DOM提升效率。这些框架与HTML/CSS结合,使用模板语法、样式管理及组件化思想。未来趋势包括框架简化、Web组件标准采用和CSS在框架中角色的演变。开发者需紧跟技术发展,掌握新工具,提升开发效能。