一文讲透 backdrop-filter:毛玻璃与背景滤镜的终极方案

更新日期: 2026-02-04 阅读: 26 标签: 背景

backdrop-filter 是 css 中一个强大的视觉效果属性,它与 filter 属性类似,但作用对象不同。backdrop-filter 用于 对元素背后的区域(即“背景幕布”)应用图形效果(如模糊、颜色偏移) ,而元素本身及其内容不受影响。

“背景幕布”是什么?

  • 它是指被当前元素 所覆盖住 的那部分页面区域(包括背景图片、颜色、以及在该元素之下的其他元素)。

  • 你可以把它想象成在元素后面拉起的一块“幕布”,然后在这块“幕布”上做滤镜处理。

  • 最终视觉效果是:你透过一个“滤镜玻璃”(当前元素)去看它后面的东西。如下图所示:

工作原理详解:

  • 背景层:这是网页的底层,包含各种背景元素和内容。

  • 背景幕布:当元素设置了 backdrop-filter 时,浏览器会创建其背后区域的"快照",这个快照就是"背景幕布"。

  • 滤镜应用:CSS 滤镜(模糊、亮度调整等)被应用到这块"背景幕布"上,而不是元素本身。

  • 合成显示:经过滤镜处理的背景幕布与前景元素合成,最终呈现给用户。

  • 关键点:前景元素(文本、边框、图标等)完全不受滤镜影响,保持原始清晰度。


一、基本语法

backdrop-filter: <filter-function> [<filter-function>]*;
  • 与 filter 属性一样,可以同时应用多个滤镜函数,用空格分隔。


二、常用滤镜函数

backdrop-filter 几乎支持所有与 filter 属性相同的滤镜函数:

 函数名

作用

参数说明

blur()

模糊效果

长度值(如5px),值越大越模糊

brightness()

亮度调整

数字或百分比(0% 全黑,100% 原图,>100% 更亮)

contrast()

对比度调整

数字或百分比(0% 全灰,100% 原图,>100% 更高对比度)

grayscale()

灰度转换

数字或百分比(0% 原图,100% 全灰)

hue-rotate()

色相旋转

角度值(如 90deg),360deg 为一圈

invert()

颜色反转

数字或百分比(0% 原图,100% 完全反转)

opacity()

透明度调整

数字或百分比(0% 完全透明,100% 完全不透明)

saturate()

饱和度调整

数字或百分比(0% 无色彩,100% 原图,>100% 更高饱和度)

sepia()

褐色调(复古效果)

数字或百分比(0% 原图,100% 完全褐色)

url()

引用SVG滤镜

svg路径

  • 注意:backdrop-filter属性不包含drop-shadow()函数。

以下从参数解析、应用场景到使用示例,逐一细致阐述各滤镜函数的特性与用法:

2.1 blur() - 模糊 (最常用)

backdrop-filter: blur(5px);
  • 对背景进行高斯模糊,创建经典的“毛玻璃”效果。

2.2 brightness() - 亮度

backdrop-filter: brightness(0.8);
  • 让背景变暗(<1)或变亮(>1)。常用于使背景变暗以突出前景内容。

2.3 contrast() - 对比度

backdrop-filter: contrast(1.5);
  • 调整背景的对比度。

2.4 grayscale() - 灰度

backdrop-filter: grayscale(1);
  • 将背景变为完全黑白(1)或部分黑白(0到1之间)。

2.5 sepia() - 褐色滤镜

backdrop-filter: sepia(1);
  • 为背景添加褐色(复古)滤镜。

2.6 saturate() - 饱和度

backdrop-filter: saturate(2);
  • 增加背景颜色的饱和度。

2.7 hue-rotate()  - 色相旋转

backdrop-filter: hue-rotate(90deg);
  • 旋转背景的色相环,产生色彩变化。

2.8 invert() - 反色

backdrop-filter: invert(1);
  • 反转背景颜色。

2.9 opacity() - 透明度

backdrop-filter: opacity(0.5);
  • 降低背景的不透明度。通常更推荐用 rgba 背景色或 brightness 来间接实现类似效果。

  • 注意:标准已弃用,部分浏览器可能不支持。

2.10 组合使用

backdrop-filter: blur(6px) brightness(0.8) saturate(1.2);
  • 同时应用模糊、变暗和增加饱和度,效果通常比单一滤镜更自然。


三、关键特性与使用要点

3.1 需要元素(部分)透明

如果元素背景是完全不透明的(如:background: white;),你将看不到 backdrop-filter 的效果,因为“幕布”被完全挡住了。通常需要:

.element {
background-color: rgba(255, 255, 255, 0.3); /* 半透明背景 */
backdrop-filter: blur(10px);
}

3.2 性能考量

  • backdrop-filter 是 硬件加速 的,性能通常不错。

  • 但过度使用(尤其是大面积、高强度的 blur )或在低性能设备上,仍可能导致 滚动或动画卡顿。务必在实际设备上测试。

3.3 边界与堆叠上下文

  • 效果会收束于元素的 border-box 边界(包括 border-radius 定义的圆角)。

  • 应用 backdrop-filter 的元素会创建一个 新的堆叠上下文 (就像 opacity 小于1、transform 等属性一样)。

3.4 -webkit- 前缀

  • 虽然现代浏览器已普遍支持,但为了最佳兼容性(尤其是 Safari),通常仍需同时使用带前缀的版本

.element {
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
}


四、经典应用场景

4.1 毛玻璃效果(Frosted Glass)

这是最经典的应用,模仿 iOS 和 macOS 的模糊透明效果。

示例:

.frosted-glass {
background-color: rgba(255, 255, 255, 0.15);
-webkit-backdrop-filter: blur(10px) saturate(1.3);
backdrop-filter: blur(10px) saturate(1.3);
border: 1px solid rgba(255, 255, 255, 0.2);
}

4.2 模态框/对话框背景

打开对话框时,让背后的页面内容模糊或变暗,引导用户聚焦于对话框。

示例:

.dialog-backdrop {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background-color: rgba(0, 0, 0, 0.2); /* 轻微遮罩 */
-webkit-backdrop-filter: blur(3px) brightness(0.9);
backdrop-filter: blur(3px) brightness(0.9);
}

4.3 悬浮导航栏或标题栏

当页面滚动时,让导航栏背景模糊,与内容产生层次感。

示例:

.sticky-header {
position: sticky;
top: 0;
background-color: rgba(255, 255, 255, 0.8);
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
}

4.4 高亮卡片或工具提示

突出显示重要内容,同时保持与背景的视觉链接。适合用于特色内容、数据统计或行动号召。

示例:

.highlight-card {
background-color: rgba(255, 255, 255, 0.6);
-webkit-backdrop-filter: blur(20px) contrast(1.1);
backdrop-filter: blur(20px) contrast(1.1);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}

4.5 图像预览或滤镜切换器

为图像上方的控制面板添加效果,使其可读又不完全遮挡图片。

示例:

.image-controls {
background-color: rgba(0, 0, 0, 0.4);
-webkit-backdrop-filter: blur(4px) grayscale(0.5);
backdrop-filter: blur(4px) grayscale(0.5);
color: white;
}


五、浏览器兼容性与回退方案

  • 兼容性:所有现代浏览器(Chrome, Firefox, Edge, Safari)都已支持。详细数据可查看 [Can I use:css-backdrop-filter ]。

  • 回退方案:对于不支持的老旧浏览器,最重要的是确保 内容的可读性 。通常的做法是先设置一个纯色或半透明的备用背景。

.element {
/* 备用样式:不支持 backdrop-filter 的浏览器会使用这个 */
background-color: rgba(255, 255, 255, 0.9);
/* 支持 backdrop-filter 的浏览器会叠加此效果 */
@supports ((-webkit-backdrop-filter: blur(10px)) or (backdrop-filter: blur(10px))) {
background-color: rgba(255, 255, 255, 0.6);
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
}
}


总结

backdrop-filter 是一个强大的 CSS 属性,它通过简单的代码即可创建出极具现代感和层次感的视觉界面。其核心在于 操作元素背后的“背景幕布”,与 filter 形成互补。要掌握它,关键在于:

  • 理解其作用对象:是背景,不是元素自身。

  • 配合透明度使用:确保背景可见。

  • 善用滤镜组合:blur() + brightness() / saturate() 能让效果更自然。

  • 注意性能与兼容性:谨慎使用高强度模糊,并始终提供优雅降级方案。

掌握了它,你就能轻松实现过去需要复杂图片处理或额外html元素才能完成的视觉效果。

来源:https://mp.weixin.qq.com/s/WhGO_OIbNI4wZvuS8bLEJA

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13326

相关推荐

微信小程序背景图为什么显示不出来?解决背景图片显示问题

在调试工具上都是可以显示的,但是扫面上传到手机上却显示不出来,这是为什么呢?这是由于:background-image 只能用网络url或者base64图片编码 , 本地图片只能用 image标签src属性才行。

css背景图充满整个屏幕

我想让整个界面有一个背景图片,自然想到的是在body上加background,加载背景图 ;背景图垂直、水平均居中;当内容高度大于图片高度时,背景图像的位置相对于viewport固定 ;

css条纹背景样式、及方格斜纹背景的实现

通过CSS中的linear-gradient主要就能显示出不同方向的条纹效果,这里我们就来详解CSS制作Web页面条纹背景样式的技巧,需要的朋友可以参考下

CSS3中background-clip背景裁切属性

CSS中的background属性想必大家已经用了无数遍,但是对于CSS3属性background-clip你可能还不太了解,那么今天我们就专门来聊聊这个属性。 clip,英文意为 “裁切,修剪”,所以很显然,background-clip属性肯定与背景裁切有关

H5移动端点击出现背景蓝色框的解决方案

当我们在移动端给元素添加点击事件时我们会发现点击时元素会默认出现一个背景色框或者高亮显示 ,如何去掉蓝色边框?是用来解决在安卓上的点击出现篮框问题

CSS设置background添加背景色两张或多张背景图

我们都知道可以用 CSS 给 background 添加背景色和背景图:那么可以给元素设置两个或者多个背景图吗?答案是可以

详解如何给背景图片加颜色遮罩

前段时间在开发中,遇到需要给背景层加颜色遮罩的项目,现在特定总结一下给背景图层加颜色遮罩的方法。方法一:通过定位叠加(注意层级)

CSS3制作文字背景图

文字带上渐变色,或者说让文字透出图片。这些效果 CSS 属性也可以完成。 使用 mix-blend-mode 能够轻易实现,我们只需要构造出黑色文字,白色底色的文字 div ,叠加上图片,再运用 mix-blend-mode 即可,简单原理如下:

10 个独特的 CSS 背景视觉效果

这几年的web设计中,大背景的设计变得越来越流行。特别是在现在大屏大行其道的情况下,设计师在设计中越来越多的使用大分辨率的背景图来填充屏幕,这样更能制造独特的视觉效果,能更好的传达他们想要向用户传达的内容。

canvas 生成页面水印,MutationObserver 控制节点防修改

网上浏览的时候。看到有些页面会有背景的水印效果,使用canvas实现了个类似的效果,可以作为背景,也可以作为页面前景覆盖,防止网页信息的截图

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!