::backdrop仅在Element.requestFullscreen()触发的系统级全屏下生效,普通弹窗无效;需确保background使用rgba()设透明度,避免opacity混用,并注意浏览器前缀兼容性。
如果 ::backdrop 的半透明背景没显示,通常不是写法错误,而是它只在特定全屏上下文中生效——比如 Element.requestFullscreen() 触发的原生全屏模式下才起作用,普通 div 加伪类是无效的。
::backdrop 是专为浏览器全屏 API 设计的伪元素,仅在调用 .requestFullscreen() 后、页面进入系统级全屏时渲染。如果你只是给某个弹窗加了 po 并试图用
sition: fixed; z-index: 9999;::backdrop 覆盖背景,那是不会生效的。
document.documentElement.requestFullscreen()
即使在真全屏下,半透明仍不显示,常见原因有:
background: rgba(0,0,0,0.5) 才有效;rgba(0,0,0,0) 或 transparent 就是完全透明opacity: 0.5,整个 backdrop 元素会变淡,但更推荐只用 background: rgba() 控制背景透明度,避免影响子内容(虽然 ::backdrop 无子元素,但习惯上不混用)*::backdrop { background: none; }
部分旧版浏览器需要加前缀:
::-webkit-backdrop
::backdrop,但需确保未禁用全屏 API(如在 iframe 中缺少 allow="fullscreen")稳妥写法:
dialog::backdrop,
:-webkit-backdrop {
background: rgba(0, 0, 0, 0.6);
}
如果只是想做个弹窗蒙版(非系统全屏),直接用一个普通元素更可靠:
放在弹窗下方.overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 9998; }