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

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

han32683年前 (2021-04-25)javascript3311

上代码

<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

本文参考 原文 改写

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

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

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

分享给朋友:

相关文章

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

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

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

js把base64的数据转换成图片并上传

直接上代码,要点就是把base64转成Blob,添加到FormData传递给后台程序,跟选择图片文件上传时一样的了。//base64图片数据 var dataurl = ...

TypeError: Cannot read properties of undefined (reading 'utils')

解决XLSX 导出报错把import XLSX from 'xlsx'变成import * as XLSX fro...

JS/VUE按钮点击上传文件

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

elementUI—el-form表单,校验二层对象的值

表单数据:formData:{     name:'',     role:{  &nb...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。