Firefox 103前未实现backdrop-filter,连解析都不支持;103+需创建层叠上下文、避免透明背景及父级隔离属性,且降级样式须置于@supports外并保障可读性。

Firefox 103 之前压根没实现 backdrop-filter,不是“默认关闭”,而是代码里根本没这功能——加 -moz-backdrop-filter 也无效,浏览器直接跳过整条声明。
Firefox 102 及更早版本:连解析都不做
Gecko 引擎直到 103 版才把 backdrop-filter 写进标准渲染流程。70~102 版虽在 about:config 里留了个开关 layout.css.backdrop-filter.enabled,但那是实验性补丁,普通用户不可能、也不该去改它。低于 103 的 Firefox 安装(尤其企业内网常见)会把 backdrop-filter: blur(8px) 当作无效 CSS,连降级样式都收不到,除非你提前写好兜底。
@supports (backdrop-filter: ...) 在 Firefox 里会失效
只写 @supports (backdrop-filter: blur(1px)) 是危险的:Firefox 102 及更早会把它当语法错误,整块规则被丢弃,导致降级样式也加载不了。
- 必须用 JavaScript 运行时检测:
window.CSS && CSS.supports('backdrop-filter', 'blur(1px)') - 或者改用双条件 CSS 检测:
@supports (backdrop-filter: blur(1px)) and (-webkit-backdrop-filter: blur(1px))——这样 Safari 和 Chrome 能进,Firefox 直接跳过,不干扰外层降级样式 - 降级样式(比如
background-color: rgba(255,255,255,0.15))必须定义在@supports外部,且优先级不能被覆盖
Firefox 103+ 仍可能不显示,原因不在兼容性
即使升级到 103,模糊效果仍可能白屏或消失,问题出在渲染链上:
立即学习“前端免费学习笔记(深入)”;
- 目标元素没创建层叠上下文:加
position: relative或isolation: isolate,缺了这句 Firefox 就不触发 backdrop 渲染 - 背景用了
transparent或rgba(0,0,0,0):Firefox 会判定“背后无内容可采样”,直接跳过模糊步骤;必须用带 alpha 的色值,如rgba(255,255,255,0.1) - 父容器有
opacity、filter或will-change: opacity:这些属性会让 Firefox 把子树隔离成独立图层,backdrop-filter失去采样目标
最常被忽略的是:Firefox 用户看到的不是“模糊变弱”,而是“完全没模糊”——所以降级不能只调透明度,得靠圆角、描边、轻微阴影和足够高的文字对比度来维持玻璃质感的体面感。


















