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

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

han32684年前 (2021-04-25)javascript4446

上代码

<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://www.hanwenblog.com/post/55.html

分享给朋友:

相关文章

element-ui 传入一个全局配置对象 对按钮组件全局设置size大小

官方文档:在引入 Element 时,可以传入一个全局配置对象。该对象目前支持 size 与 zIndex 字段。size 用于改变组件的默认尺寸,zIndex 设置弹框的初始 z-index(默认值...

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

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

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

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

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

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

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

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

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