很多前端开发者调试 z-index 时都会碰上这样的死局:明明设了 9999,元素却死活不肯浮到最上面。问题通常不在数字本身,而在于父元素悄悄创建了堆叠上下文(Stacking Context)。一旦某个父级意外触发了这个机制,子元素的 z-index 就只能在那个父容器内部比较,跟外部同级元素根本
很多前端开发者调试 z-index 时都会碰上这样的死局:明明设了 9999,元素却死活不肯浮到最上面。问题通常不在数字本身,而在于父元素悄悄创建了堆叠上下文(Stacking Context)。一旦某个父级意外触发了这个机制,子元素的 z-index 就只能在那个父容器内部比较,跟外部同级元素根本不在同一个“层级世界”。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
绝大多数“设了也不起作用”的情况,根因并不是子元素自身,而是它的某个父级悄悄触发了新的堆叠上下文。常见触发条件包括:opacity 小于 1、transform 非 none(哪怕只是 translateZ(0))、filter、will-change、isolation: isolate。这些属性本身不写 z-index,却强制创建独立层级空间。
outline: 1px solid red 快速定位,再移除 transform 或 opacity 验证是否恢复scale-95、blur-sm、opacity-95 这类工具类,它们背后就是上述触发属性z-index 只对已定位元素生效——即 position 必须是 relative、absolute、fixed 或 sticky。设为 static(默认值)时,写 z-index: 9999 还是 z-[9999],浏览器压根不理睬。
position: relative,否则 z-index 形同虚设position: relative ≠ 子元素自动获得定位能力,子元素自己必须显式声明position: sticky 有滚动边界限制,超出后退化为 relative,此时 z-index 行为可能突变,需实测验证Tailwind v3+ 不再支持数组写法或 extend.zIndex,所有 z- 类必须提前在 theme.zIndex 中以字符串键名定义,否则生成不出对应 CSS。
zIndex: { 'modal-overlay': '60', 'tooltip': '40' }zIndex: ['0', '10'](废弃)、extend: { zIndex: { 'modal-overlay': '60' } }(无效)、zIndex: { modal-overlay: '60' }(JS 解析失败)tailwind.config.js 必须手动重启 dev server,JIT 模式不热重载配置变更z-[999] 动态拼接:React 中 class={`z-[${depth}]`} 在构建时不会被扫描,生产环境必漏样式即便设了 z-index: 9999,模态框仍可能被 、 或旧版 盖住——这不是 CSS 层级问题,而是浏览器把这些元素放在操作系统级合成层(OS compositor layer),物理上就压在普通 DOM 之上。
添加 allow="autoplay; fullscreen" 并确保其容器 z-index 低于 modal 主容器wmode=transparent 仅对老式 Flash 有效,现代场景下基本无效 直系下,避开所有中间容器的渲染层干扰真正卡住人的从来不是数字大小,而是那些看不见的上下文边界——一个 opacity: 0.99、一行没配好的 theme.zIndex、或者忘了加的 position: relative,都足以让整个层级体系失效。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述