弹窗层级已经调到最大,还是被导航栏盖住一半。乍看像缓存或者权限的锅,追下去往往不是。
.modal { position: fixed; z-index: 1000; }
# 挂载到 body 下避免被祖先上下文限制
追下去是这么回事:父级形成了独立层叠上下文,子元素的层级只在父级内部比较。
「层叠上下文」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
具体做法是,检查父级的透明度、变换和定位属性;把弹窗挂到根节点下;减少中间层级的上下文。
验收就看一点,弹窗完整显示在最上层,导航不再遮挡。