移动端z-index失效的根源是隐式层叠上下文:先检查被遮挡元素position是否为static,再用Layers面板定位创建stacking context的父节点(如含transform/opacity的元素),最后排查html/body的overflow或transform截断。
移动端 z-index 失效,第一反应不是调大数值,而是确认 position 值是否被悄悄重置为 static。响应式样式、媒体查询、Vue/React 的 class 动态切换都容易导致这个“回退”。
position,看最终值是不是 relative、absolute、fixed 或 sticky
@media (max-width: 768px) 里有没有漏写 position 声明——桌面端写了 position: fixed,移动端没补,就只剩 static
position: relative(不影响布局),立刻验证层级是否恢复;若恢复,说明问题就出在这一步移动端最常踩的坑是父级用了 transform 或 opacity 却浑然不觉——它们会隐式创建层叠上下文,把子元素关进“盒子”里,再高的 z-index 也出不去。
z-index 却显示 Yes 的节点:大概率是它带了 transform: translateZ(0)、scale(1),或 opacity: 0.999、filter: blur(0)
transform 或 filter,观察遮挡是否立刻消失移动端 Safari 对 html 和 body 的渲染限制极严,这两处一旦触发层叠上下文或裁剪,position: fixed 元素(如弹窗、底部导航)基本必挂。
html → body → 根容器(如 #app)逐级检查,搜 stacking context 和 overflow
body { overflow: hidden } → 导致 fixed 元素滚动时被裁切;html { transform: translateZ(0) } → 整个文档变成单一层叠上下文,“全局最高”的弹窗也只在它内部排第一body 和 html 上所有 transform、opacity、filter;再检查 overflow 是否意外设为 hidden 或 auto
真正卡住你的从来不是数值大小,而是某层祖先悄悄拿到的那张“隔离卡”。z-index: 9999 在局部上下文里只是“军区司令”,对外面来说就是一张扁平卡片。
will-change: transform 和 transform: translateZ(0) 在移动端几乎等价,但前者更轻量,且不会强制新建上下文(除非配合其他属性)will-change: opacity 替代 transform,它触发的上下文影响范围更小tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)