当前位置:首页 > 经验笔记 > javascript > 正文内容

layer弹层遮罩挡住窗体解决,解决layer弹层遮罩挡住窗体的问题

han32684年前 (2021-04-25)javascript4016

上代码

<div>
    <div>这里面某个按钮触发弹层<div>
    <div id='dialog' hidden='hidden'></div>
</div>

如果上面的按钮触发了弹层 layer.open 且content是某个DOM元素


content:$('#dialog')


那么这里弹出层,遮罩会遮住到弹窗导致操作不了。


官网给出的说法是  如果弹层的内容content是某个DOM元素的话,要放在body的根节点下。不能放在div里面了。


我看了html代码,最后生成的遮罩DOM元素的位置是body的子级,所以知道弹层的DOM要和遮罩的DOM 要在同一层。


所以这里再弹层的success的事件里面进行了处理,将遮罩的DOM位置挪动了一下,和弹层DOM元素同一级,代码如下:

            success: function(layero,index){
                var id = '#layui-layer-shade'+index;
                var mask = layui.$(id);
                mask.appendTo(layero.parent());
            }

这样 弹层的遮罩DOM元素和弹层元素就在同一层了,就不会挡着弹层了。

--虽然这样解决了覆盖层的盖住弹窗的问题 但是如果左边有导航放大或者拖动弹窗部分元素会被导航挡住

如图 :

image.png

终极解决办法 ,弹窗节点搬到遮罩层后面 还原layui弹窗的原始结构

            success: function(layero,index){
                var shadeid = '#layui-layer-shade'+index;//遮罩层ID
                layui.$(shadeid).after(layero)//插入节点到遮罩层后面
            }

image.png

如果你使用异步加载内部html 你可能会遇一次多个弹窗的问题 使用下面代码即可解决

layui.$('body>#ID').remove();

在内部js最前面执行 ID改成自己弹窗 DOM元素ID

本文参考 原文 改写

扫描二维码推送至手机访问。

版权声明:本文由瀚文博客发布,如需转载请注明出处。

本文链接:https://hanwenblog.com/post/55.html

分享给朋友:

相关文章

ES6 find 和 filter 的区别

遇到个功能是要分类就想说在前端过滤,不要从查数据库的时候过滤了。然后就想说除了filter还有啥好用的发现有个find,测试一番之后发现const list = [{&#...

JS/VUE按钮点击上传文件

直接上代码    importFile() {       const fil...

判断echart实例是否已经存在,如果不存在,就进行初始化

      var myChart = echarts.getInstanceByDom(chartDom)...

ECharts绘制立体柱状图(圆柱体)详细示例

ECharts绘制立体柱状图(圆柱体)详细示例

echarts实现平面的柱状图很顺利,但是用户为了美观立体感,用到圆柱体图,下面这篇文章主要给大家介绍了关于ECharts绘制立体柱状图(圆柱体)的相关资料,需要的朋友可以参考下绘制这个立体的圆柱体柱...

js遍历树,多层嵌,递归循环 elementUI Cascader 级联选择器数据结构拼接

js遍历树,多层嵌,递归循环 elementUI Cascader 级联选择器数据结构拼接

目的:后端传入数据和elementUI Cascader组件使用数据不一致 ,树形结构未知层级原始数据:{     "success":t...