码译 · VibeCode
弹窗盖不住别的元素
层级管理(z-index)
Z-index / Stacking
反模式到处写 z-index:9999,新弹窗永远盖不住旧的
正解建立层级规范(如遮罩 1000、弹窗 1001、Toast 2000),别随手堆大数
在线对比体验 · 同一个需求,大白话 vs 平台提示词,效果立分高下 · 右边可点击体验
大白话直接生成
弹窗被按钮盖住
平台提示词生成
弹窗盖在最上
点一下试试
差在哪?大白话没讲「到处写 z-index:9999,新弹窗永远盖不住旧的」,AI 只能自己猜;平台提示词写明「建立层级规范(如遮罩 1000、弹窗 1001、Toast 2000),别随手堆大数」,还带要点与三端注意,一次到位不用返工。
代码示例
错误写法
.a{ z-index:9999; } .b{ z-index:99999; } /* 数字失控,互相覆盖 */
正确写法
:root{ --z-mask:1000; --z-modal:1001; --z-toast:2000; } .modal{ z-index:var(--z-modal); }
语义锚点 · 对齐 AI 语义库契约
<div data-vibe="z-index-stacking"> … 组件根元素 … </div><!-- AI 用语义名片 locate 此属性即可定位/修改 -->
在组件根元素挂 data-vibe="z-index-stacking",AI 用语义名片里的 locate([data-vibe='z-index-stacking'])即可定位、修改、组合该组件——与「AI 语义库」tab 的契约一一对应。在 AI 语义库看契约 →
不同平台注意
网页配合 stacking context 理解
AppRN 无 z-index,用 elevation 或顺序
小程序wxss 支持 z-index,但原生组件永远在上
可直接复制的提示词(三端都给你,挑对应平台复制给 Cursor / 通义灵码 / Claude)
网页 Web
你是一位资深前端工程师。我想实现【层级管理(z-index)】(专业术语:Z-index / Stacking)。

【我想达到的效果】弹窗盖不住别的元素。
【请避免的反模式】到处写 z-index:9999,新弹窗永远盖不住旧的。
【正确做法】建立层级规范(如遮罩 1000、弹窗 1001、Toast 2000),别随手堆大数。

【平台】网页 Web(标准 HTML/CSS/JS,单文件零依赖,不引任何 CDN)。
【提示词要点】
- 用 CSS 变量统一管理层级
- 别无脑写 9999
- z-index 只在定位元素上生效

请输出完整可运行代码(关键处写中文注释),并附 50 字以内使用说明。
手机 App
你是一位资深前端工程师。我想实现【层级管理(z-index)】(专业术语:Z-index / Stacking)。

【我想达到的效果】弹窗盖不住别的元素。
【请避免的反模式】到处写 z-index:9999,新弹窗永远盖不住旧的。
【正确做法】建立层级规范(如遮罩 1000、弹窗 1001、Toast 2000),别随手堆大数。

【平台】手机 App(React Native / Flutter / 原生,给出对应组件与关键代码)。
【提示词要点】
- 用 CSS 变量统一管理层级
- 别无脑写 9999
- z-index 只在定位元素上生效

请输出完整可运行代码(关键处写中文注释),并附 50 字以内使用说明。
微信小程序
你是一位资深前端工程师。我想实现【层级管理(z-index)】(专业术语:Z-index / Stacking)。

【我想达到的效果】弹窗盖不住别的元素。
【请避免的反模式】到处写 z-index:9999,新弹窗永远盖不住旧的。
【正确做法】建立层级规范(如遮罩 1000、弹窗 1001、Toast 2000),别随手堆大数。

【平台】微信小程序(WXML/WXSS/JS,注意 rpx 单位与小程序专属约束)。
【提示词要点】
- 用 CSS 变量统一管理层级
- 别无脑写 9999
- z-index 只在定位元素上生效

请输出完整可运行代码(关键处写中文注释),并附 50 字以内使用说明。