backdrop-filter: blur() 在 Chrome 99+、Firefox 103+、Safari 15.4+ 稳定支持,Chrome 97+ 和 Edge 103+ 部分支持,Firefox 全版本需手动开启 layout.css.backdrop-filter.enabled,旧版 Safari(如 iOS 15.2 前)和微信 X5 内核完全不支持。

backdrop-filter: blur() 在哪些浏览器能用
Chrome 76+、Firefox 103+、Safari 9+(macOS/iOS 原生支持)、Edge 79+ 支持 backdrop-filter,但 Firefox 仅在启用 layout.css.backdrop-filter.enabled(默认开启)且非私密窗口下生效。Android WebView 和旧版 iOS Safari(caniuse 数据。
blur() 值设多大才不糊又有效果
常见误区是直接写 backdrop-filter: blur(20px)——数值越大越透明?不是。blur 是高斯模糊半径,单位必须是 px 或 rem,不能用 % 或无单位数字。实际体验中:
-
blur(4px)~blur(8px)是最常用区间:足够区分背景与内容,又不会让文字边缘严重失焦 -
blur(12px)以上在高分辨率屏上可能让文本阅读困难,尤其小字号或浅色文字 - 若配合
background-color: rgba(255,255,255,0.1),可适当降低 blur 值(如blur(6px)),靠透明度补“玻璃感”
为什么加了 backdrop-filter 还是没效果
最常见的三个原因:
- 父容器或自身设置了
overflow: hidden,会裁剪模糊区域——改用overflow: visible或移除该声明 - 元素没有「透出背景」的条件:背后必须有可被模糊的内容(比如 body 有图片/渐变,且该元素是半透明或带 alpha 的
background) - 开启了硬件加速但未触发合成层:给元素加
transform: translateZ(0)或will-change: transform可强制提升图层,解决部分 Chrome 渲染异常
一个最小可验证示例:
立即学习“前端免费学习笔记(深入)”;
.glass {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px); /* Safari 兼容 */
border-radius: 12px;
}和 filter: blur() 混用会怎样
filter: blur() 模糊的是元素自身(含子内容),backdrop-filter: blur() 模糊的是元素「背后」的区域。两者叠加会导致双重模糊,视觉上像蒙了一层厚雾,尤其当元素有子文本时,文字会严重发虚。
- 不要同时对同一元素设置两者
- 若需局部模糊背景 + 整体降噪,优先用
backdrop-filter,再通过opacity或background-blend-mode调整融合度 - 动画中慎用
backdrop-filter:iOS Safari 中快速变化 blur 值可能卡顿,建议用 CSS transition 控制,且只在用户交互后触发(如 hover)
真正难调的不是数值,而是 blur 和 background 透明度、border-radius、阴影之间的平衡——稍一过量,玻璃就变磨砂窗,再过一点就成毛毯。动手前先在真实设备上连着调试器试两轮。


















