京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

前端element-ui两层dialog嵌套遮罩层消散的题目办理办法

2024-11-2 22:45| 发布者: c2688| 查看: 51| 评论: 0

摘要: 目次配景题目办理思路题外话总结配景 总以为element-ui dialog的遮罩层逻辑有点晦涩,当一个dialog内嵌另一个dialog时,它的遮罩层却始终只有一个,也就是下方class="v-modal"的div。 可以看到, v-modal的层级总是
目次

配景

总以为element-ui dialog的遮罩层逻辑有点晦涩,当一个dialog内嵌另一个dialog时,它的遮罩层却始终只有一个,也就是下方class="v-modal"的div。

可以看到, v-modal的层级总是比dialog低一层。

题目

当两层dialog为直接父子关系时, 我们可以简朴的使用其属性append-to-body, modal-append-to-body来办理题目:

  • 如,第二层dialog内容被遮罩层覆盖。
[code]<el-dialog> ... <el-dialog> </el-dialog> </el-dialog> [/code]

但是,当两层dialog不是直接父子关系, 你大概会碰到关闭dialog2时,回到dialog1后,遮罩层消散的题目。

推测:

  • 关闭dialog时, 隐蔽遮罩层的逻辑是有延长的,大概(几十毫秒)。
  • 关闭dialog2时,element会为dialog1动态添加一个v-modal的遮罩层。
  • 在特定环境下,上述 逻辑1 会晚于 逻辑2 ., 导致dialog1的遮罩层消散
[code]<el-dialog ref="dialog1"> ... <el-tab> ... <el-dialog ref="dialog2"> </el-dialog> <el-tab> </el-dialog> [/code]

办理思路

回到dialog1时, 手动判断 v-modal遮罩层是否存在,没有则添加。

[code] // 办理dialog嵌套,从第二层返回后,遮罩层消散的题目 addModalDivIfNotExists() { // 获取dialog的父级div const parentDiv = this.$refs.parentDiv; // 获取dialog const dialog = this.$refs.dialog // 检查是否已存在class为"v-modal"的div const existingModalDiv = parentDiv.querySelector('.v-modal'); if (!existingModalDiv) { // 如果不存在,则创建一个新的div const newModalDiv = document.createElement('div'); newModalDiv.classList.add('v-modal'); // 设置z-index const parentZIndex = dialog.$el.style.zIndex newModalDiv.style.zIndex = Number(parentZIndex) - 1 // 将新的div添加到父级div中 parentDiv.appendChild(newModalDiv); } }, [/code]

题外话

使用ant design vue的modal时, 好像没有碰到雷同题目

总结

到此这篇关于前端element-ui两层dialog嵌套遮罩层消散的题目办理的文章就先容到这了,更多相干element-ui两层dialog嵌套遮罩层消散内容请搜索脚本之家从前的文章或继承欣赏下面的相干文章盼望各人以后多多支持脚本之家!


来源:https://www.jb51.net/javascript/326716oix.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 09:26 , Processed in 0.028112 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部