elementplus如何实现dialog遮罩层外的元素可以被操作点击

elementplus如何实现dialog遮罩层外的元素可以被操作点击

element plus 组件库中的 dialog 组件可以说是使用频率最高的组件之一,它的效果是弹出一个对话框,外面默认会有一个蒙层。

现在我碰到的需求是,弹窗要正常显示,但是蒙层下面的元素内容又是可以点击的,如何实现呢?

以下是我的解决代码(vue)

首先是 HTML 部分

html 复制代码
<div class="dialog">
  <el-dialog
    v-model="visible"
    title="xxx"
    :close-on-click-modal="false"
    :close-on-press-escape="false"
  >
    <!-- content.... -->
  </el-dialog>
</div>

然后是 css 代码

html 复制代码
<style lang="scss" scoped>
.itrImgDialog {
  :deep(.el-overlay) {
    background-color: transparent;
    pointer-events: none;
  }
  :deep(.el-dialog) {
    pointer-events: auto;
  }
}
</style>

来解释一下:

要实现蒙层外面的内容可以点击被操作,核心是用到了pointer-events; 这个属性用于控制元素是否能成为鼠标事件的目标。

常见的两个值

auto:这是默认值。元素可以响应鼠标事件。

none:元素不会成为鼠标事件的目标。即鼠标事件会"穿透"这个元素,作用在元素下方的其他元素上。

所以我们把 el-overlay 设置为 pointer-events: none; ,但是为了要保证 dialog 本身能够点击,所以将 el-dialog 设置为 pointer-events: auto;

值得注意的是,el-dialog 的 mask 属性不要设置成 false,否则上述修改是不生效的,一定要注意。

希望能帮到你。

相关推荐
han_hanker3 分钟前
SQL语法 , BETWEEN ... AND ...,比较运算符
前端·javascript·sql
PedroQue994 分钟前
Vite插件v1.1.0发布:自动导入全面重构
前端·vite
FogLetter4 分钟前
三栏布局的七十二变:从Flex到Grid,我学会了响应式设计的"降龙十八掌"
前端·面试
答案answer5 分钟前
做了几年 Three.js,我为什么决定自己开发一款3D低代码编辑器
前端·three.js
Revolution615 分钟前
首屏变慢后,应该先查资源下载、脚本执行还是接口请求
前端·性能优化·前端工程化
shawn03267 分钟前
《疯狂动物城 2》背后的 Hybrid BVH:迪士尼如何让复杂场景跑进交互式 GPU 光追
前端·计算机图形学
圣光SG12 分钟前
web操作题练习(五)
前端
杉氧16 分钟前
弹性滚动的奥秘:在 Flutter 中使用 CustomScrollView 与 Sliver 打造极致流畅列表
android·前端·flutter
jinshw24 分钟前
自己实现GIS配图软件(二)
前端·后端·rust
肥胖小羊28 分钟前
企业微信自建应用多环境联调与路由代理方案
服务器·前端·网络