必须在首次layer.open()前用layer.config()一次性设置全局zindex基准值,之后弹窗自动递增;若在open中手动设zindex会破坏递增链,导致遮罩错乱、select被盖。

要让Layui所有弹窗都从一个更高(或更低)的z-index起始值开始自动递增,必须在首次调用layer.open()之前,用layer.config()一次性设置全局基准值;晚于任何layer.open()执行将完全无效。
正确设置全局zIndex基准值
第一步:确保layui.js已加载完成,且尚未执行任何layer.open()、layer.alert()、layer.prompt()等弹窗方法。
第二步:立即调用layui.use('layer', ...),并在回调中执行layer.config(),传入{ zIndex: 数值 }。这个数值就是后续所有弹窗z-index的起始点,比如设为1100,则第一个弹窗zIndex=1100,第二个=1101,依此类推。
第三步:之后的所有layer.open()调用都不再需要手动指定zIndex——Layui会自动在此基准上递增。若此时再在open中写zIndex: 2000,【会破坏自动递增链,导致遮罩层错乱、select下拉被盖住】。
如何确定该设多少才合适
方法一:查页面已有最高z-index元素。打开浏览器开发者工具,选中导航栏、顶部固定菜单等关键UI元素,查看Computed面板中的zIndex值。若显示为980,则layer.config({ zIndex: 1080 })是稳妥选择。
方法二:避开常见第三方库冲突。UEditor默认zIndex=1000,ECharts Tooltip常用1050,百度地图下拉框需≥3001。因此设为3100既能压过它们,又不会高到引发跨库冲突。
注意:不要设成999999这类极大值——它可能与某些富文本编辑器、可视化组件的内部zIndex撞车,反而造成更隐蔽的层级覆盖问题。
错误做法与即时验证
错误做法:把layer.config()放在layer.open()之后,或重复执行多次。此时控制台不会报错,但配置完全不生效,所有弹窗仍从默认的19891014开始计数。
快速验证是否生效:打开任意layer弹窗后,在开发者工具中检查.layui-layer元素的style属性,看zIndex是否为你设定的基准值或其+1/+2的结果。不是19891014开头,就说明配置成功。











