当前位置: 首页 > article >正文

Vue3+Element Plus:使用el-dialog,对话框可拖动,且对话框弹出时仍然能够在背景页(对话框外部的页面部分)上进行滚动以及输入框输入信息

【需求】
使用Element Plus中的el-dialog默认是模态的(即它会阻止用户与对话框外部的元素进行交互),对话框弹出时仍然能够在背景页(对话框外部的页面部分)上进行滚动以及输入框输入信息,且对话框可拖动

【思路】

  • 设置el-dialog属性draggable为true,开启可拖动功能
  • 设置el-dialog属性modal为false,关闭遮罩层样式
  • 设置el-dialog属性lock-scroll为false,在 Dialog 出现时将 body 解除滚动锁定
  • 设置el-dialog属性close-on-click-modal为false,不可以通过点击 modal 关闭 Dialog
  • 添加el-dialog属性modal-class,遮罩的自定义类名,设置为pointer-events: none
  • 添加el-dialog属性class,Dialog 的自定义类名,设置为pointer-events: auto

【示例代码】

<template>
  <el-button plain @click="dialogVisible = true">
    打开弹出框
  </el-button>
  <ul>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>
    <el-input v-model="backgroundInput" placeholder="在背景页输入"></el-input>
  </li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  <li>6</li>
  </ul>

<div>
  <el-dialog
  v-model="dialogVisible"
  title="标题"
  width="500"
  draggable
  :modal="false"
  :lock-scroll="false"
  :close-on-click-modal="false"
  modal-class="modal-wrap"
  class="dialog-wrap"
  >
    <span>content区域</span>
    <template #footer>
      <div class="dialog-footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button type="primary" @click="dialogVisible = false">
          确定
        </el-button>
      </div>
    </template>
  </el-dialog>
</div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'

const dialogVisible = ref(false)
const backgroundInput = ref('')

</script>
<style scoped>
:deep(.modal-wrap) {
  pointer-events: none !important;
}
:deep(.dialog-wrap) {
  pointer-events: auto !important;
}
</style>

【效果】

在这里插入图片描述

【注意】

但请注意,尽管技术上可行,但在实际应用中一般不推荐将对话框设置为非模态,因为这可能会导致意外的交互。所以如果需要在对话框中收集用户输入,最好是在对话框内部添加相应的表单元素。


http://www.kler.cn/news/308368.html

相关文章:

  • (c++)函数的分文件编写
  • [创业之路-146] :如何理解:复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程的事情数字化,数字化的事情自动化,自动化的事情智能化
  • Chisel简明教程
  • 【大模型实战篇】高质量数据过滤及一种BoostedBaggingFilter处理方法的介绍
  • JDK的选择安装和下载
  • 软考 -- 软件设计师 -- 二轮复习(3) -- 数据结构(持续更新)
  • 24.Redis实现全局唯一ID
  • 电脑信息安全:挑战与应对策略
  • PAT甲级-1055 The World‘s Richest
  • 【C++学习入门】6.左值右值
  • 软件测试方法及其应用概述
  • JZ2440开发板——S3C2440的时钟体系
  • RFID射频模块(MFRC522 STM32)
  • Linux 之父 Linus Torvalds:低调的神话创造者
  • 网络协议全景:Linux环境下的TCP/IP、UDP
  • chattr:修改文件的特殊属性
  • Linux抢占调度
  • kali——tshark的使用
  • 2024 批量下载知乎回答/文章/想法/专栏/视频/收藏夹,导出 excel 和 pdf
  • Django_Vue3_ElementUI_Release_004_使用nginx部署
  • idea插件开发的第四天-完善JSON工具
  • 算法:76.最小覆盖子串
  • 文章-深入GPU硬件架构及运行机制 学习后记
  • 撤回仓库的提交
  • 基于SpringBoot实现SpringMvc上传下载功能实现
  • uniapp 如何自定义导航栏并自适应机型
  • 【ESP32】ESP-IDF开发 | 中断矩阵+按键输入中断例程
  • 发送成绩的app或小程序推荐
  • PTrade量化服务器连接openapi的地址、key等配置涉及哪些文件?
  • 【学习笔记】SSL密码套件之哈希