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

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

han32684年前 (2021-04-25)javascript3833

上代码

<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

分享给朋友:

相关文章

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

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

树形结构(tree)和扁平数组(list)的相互转换

项目中很多地方需要用到树形结构表格等,因此自己封了个VUE的树和表格组件,需要经常对两种形式的数据进行相互转换,这里记录下转换的方法扁平数组转换为树形结构这个是最常用的,当我们从后台获取一个扁平数组的...

ES6 find 和 filter 的区别

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

Echarts图表的悬浮框位置的调整

下面的代码实现了悬浮框的位置不会超出界面 最多在离界面边缘5px的地方tooltip: {         ...

axios下载文件

      api         .getAllAlar...

发表评论

访客

看不清,换一张

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