backdrop-filter 是实现背景模糊效果的正确 CSS 属性,需配合半透明遮罩、父容器背景图及硬件加速(如 will-change: filter),blur(6px)–blur(10px) 最常用,兼容性差需降级为静态模糊图。

background-blur 不是 CSS 标准属性,别白费劲搜
CSS 里没有 background-blur 这种写法,所有试图直接给 background-image 加模糊的尝试(比如 filter: blur(5px))都会失败——因为 filter 作用在元素整体上,不是只模糊背景,而是连文字、子元素一起糊掉。
用 backdrop-filter 实现「背景透过模糊层」效果
真正能达成“背景图片平滑模糊”视觉感的,是 backdrop-filter,但它不作用于背景图本身,而是让元素背后的区域(即父容器或更外层的背景)呈现模糊。这意味着:你得把背景图放在被模糊元素的「背后」,再用一层半透明遮罩盖在上面,最后对遮罩启用 backdrop-filter。
- 必须开启硬件加速:给应用
backdrop-filter的元素加transform: translateZ(0)或will-change: filter,否则 Safari 和部分 Chrome 版本会失效或闪烁 - 需要透出背景:该元素的
background-color得是半透明(如rgba(255,255,255,0.8)),纯白或不透明就看不到背后模糊了 - 父容器必须有背景图:
backdrop-filter模糊的是它「背后的内容」,所以body或父div得先设好background-image
body {
background-image: url("bg.jpg");
background-size: cover;
}
<p>.blur-panel {
background-color: rgba(255, 255, 255, 0.7);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px); /<em> Safari 必加 </em>/
will-change: filter;
}blur() 数值调多大才叫「平滑」?
模糊半径不是越大越自然。超过 12px 后细节丢失严重,边缘发虚,反而显得廉价;小于 4px 又几乎看不出变化。实际项目中 blur(6px) 到 blur(10px) 是最常用区间。
-
blur(0px)到blur(3px):适合 UI 控件浮层,轻微柔化边界,不干扰信息识别 -
blur(6px):网页 Banner 区域标题遮罩的默认选择,兼顾清晰度与氛围感 -
blur(12px)及以上:仅用于过渡动画终点或极简留白场景,静态使用易显空洞 - 注意:数值不能为百分比或 em,只能是
px、rem等绝对单位
兼容性坑比想象中深,尤其 iOS 和旧安卓
backdrop-filter 在 iOS 9+ Safari 和 Chrome 79+ 支持良好,但 Android WebView(尤其 4.x~8.x)基本不支持,部分国产浏览器内核也直接忽略。别指望它在微信内置浏览器里稳定工作。
立即学习“前端免费学习笔记(深入)”;
- 降级方案不是加
filter,而是用background-image: url("bg-blurred.jpg")静态替代——提前用 PS 或脚本生成一张高斯模糊后的图 - 检测是否支持:
if ("backdropFilter" in document.documentElement.style),不支持时切换 class 移除backdrop-filter并补上纯色背景 - CSS @supports 写法要带前缀:
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)))
模糊不是特效开关,是视觉层级的重新组织。没铺好背景层、没控好透明度、没填上兼容兜底,再大的 blur() 值也只是一片灰。


















