element plus的dialog组件如何实现不关闭窗口时正常操作其他区域Dom

前言

在项目中,有时需要实现在不关闭对话框的情况下,正常操作其他区域的Dom;

element plus的dialog组件的modal属性可以关闭灰色遮罩层, 但仍然无法操作其他区域的Dom;

原因

因为dialog除了model以外还存在着透明的遮罩层, 导致我们无法操作其他区域的Dom;

解决

可使用css3属性: pointer-events

pointer-events: none;
元素及其后代元素将不会作为鼠标事件的对象。但是如果后代元素的pointer-events属性为其他值(如:auto)时,鼠标事件作用于这个后代元素;
pointer-events: auto;
可以响应鼠标事件;

代码

<!-- 
  :close-on-click-modal="false":设置当点击对话框以外区域时,对话框不会关闭
  :modal="false":取消灰色遮罩层,但还是会有透明的遮罩层
  @open="handleOverlay":渲染对话框时回调函数,获取对话框Dom,操作穿透遮罩层
-->
<el-dialog
  v-model="dialogVisible"
  title="标题"
  draggable
  :modal="false"
  :close-on-click-modal="false"
  @open="handleOverlay"
  >
  <span>对话框内容</span>
</el-dialog>

在你的点击事件中, 修改dialogVisible值, 显示对话框

dialogVisible=true

对话框渲染出来后,执行回调函数

<script>
  // 穿透遮罩层
function handleOverlay() {
  //获取对话框Dom
  var overlay = document.querySelector('.is-draggable');
  // 设置pointerEvents='auto',使对话框可以正常操作
  overlay.style.pointerEvents = 'auto';
//通过对话框Dom获取遮罩层Dom,修改其pointerEvents = 'none',使其他区域可正常操作
  //第一层遮罩层
  var overlayFa = overlay.parentNode;
  overlayFa.style.pointerEvents = 'none';
  //第二层遮罩层
  var overlayGfa = overlay.parentNode.parentNode;
  overlayGfa.style.pointerEvents = 'none';
}
</script>

如果对你有帮助, 就请点一个赞吧

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于Vue Element UI的dialog组件,可以通过给确认按钮绑定一个方法,来实现点击确认调用其他方法的功能。例如: ```html <template> <div> <el-button @click="showDialog">打开对话框</el-button> <el-dialog title="提示" :visible.sync="dialogVisible" :close-on-click-modal="false" :show-close="false" > <span>确定要执行吗?</span> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取消</el-button> <el-button type="primary" @click="handleConfirm">确定</el-button> </span> </el-dialog> </div> </template> <script> export default { data() { return { dialogVisible: false }; }, methods: { showDialog() { this.dialogVisible = true; }, handleConfirm() { // 在这里调用其他方法 console.log('执行其他方法'); // 关闭对话框 this.dialogVisible = false; } } }; </script> ``` 上面的代码中,给确认按钮绑定了一个名为`handleConfirm`的方法,当用户点击确认按钮,会调用`handleConfirm`方法。在`handleConfirm`方法中,可以调用其他方法来实现需要的功能。 至于组件如何调整,具体要看你的需求。如果是需要调整dialog组件的样式和布局,可以通过修改Element UI的样式文件来实现。如果是需要添加其他功能,可以在组件的methods选项中添加对应的方法。如果是需要修改组件的props属性,可以在组件的props选项中进行修改。总之,要根据具体的需求来进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值