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

vue3 + ts + element-plus 二次封装 el-dialog

实现效果:

组件代码:注意 style 不能为 scoped

<template><el-dialog class="my-dialog" v-model="isVisible" :show-close="false" :close-on-click-modal="false" :modal="false"modal-class="my-modal-class" :draggable="props.draggable"><template #header><div class="my-header">{{ props.title }}<div style="cursor: pointer" @click="handleClose"><el-icon><CloseBold/></el-icon></div></div></template><div class="my-content"><slot name="content"/></div></el-dialog></template><script setup lang="ts">import {ref} from "vue";
import {CloseBold} from "@element-plus/icons-vue";const props = defineProps<{isVisible: boolean, // 是否显示title: string, // 标题draggable: boolean // 是否拖动
}>()const isVisible = ref(props.isVisible)const handleClose = () => {isVisible.value = false
}</script><style lang="scss">.my-dialog {pointer-events: auto; // 确保弹窗内的点击事件生效width: 400px;margin: 0;padding: 0;background: none;position: absolute;top: 300px;left: 500px;.el-dialog__header {padding-bottom: 0;.my-header {display: flex;justify-content: space-between;align-items: center;padding: 15px 30px;background: rgba(89, 123, 244);color: #FFFFFF;}}.my-content {background: #FFFFFF;padding: 15px 30px;font-size: 16px;}
}.my-modal-class {pointer-events: none; // 保证遮罩下的区域点击事件生效
}</style>

 

使用:v-bind 同时绑定多个属性

<template><custom-dialog v-bind="myDialog"><template #content>自定义内容</template></custom-dialog></template><script setup lang="ts">import CustomDialog from '@/components/CustomDialog/index.vue'
import {onMounted, ref} from "vue";const myDialog = ref({isVisible: true,title: '二次封装el-dialog',draggable: true
})</script>

http://www.lryc.cn/news/466467.html

相关文章:

  • MySQL9.0安装教程zip手动安装(Windows)
  • 如何在浏览器中查看格式化的 HTML?
  • 浅谈计算机存储体系和CPU缓存命中
  • ES操作:linux命令
  • Java使用原生HttpURLConnection实现发送HTTP请求
  • TinyC编译器5—词法分析
  • 电子电气架构---智能计算架构和SOA应用
  • Python Numpy 实现神经网络自动训练:反向传播与激活函数的应用详解
  • Apache Calcite - 基于规则的查询优化
  • react学习笔记,ReactDOM,react-router-dom
  • 优化UVM环境(八)-整理project_common_pkg文件
  • 【实战案例】Django框架连接并操作数据库MySQL相关API
  • 【其他】无法启动phptudy服务,提示错误2:系统找不到指定的文件
  • AI驱动的支持截图或线框图快速生成网页应用的开源项目
  • es集群索引是黄色
  • 获取淘宝商品评论的方法分享-调用API接口item_review
  • MATLAB人脸考勤系统
  • Spring篇(事务篇 - 基础介绍)
  • qt EventFilter用途详解
  • [ 钓鱼实战系列-基础篇-6 ] 一篇文章让你了解邮件服务器机制(SMTP/POP/IMAP)-1
  • wordpress伪静态规则
  • 缓存框架JetCache源码解析-缓存定时刷新
  • docker配置mysql8报错 ERROR 2002 (HY000)
  • 【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?
  • 如何在Linux中找到MySQL的安装目录
  • 机器人备件用在哪些领域
  • 基于单片机优先级的信号状态机设计
  • 数字电路week3
  • 如何在 Linux 中对 USB 驱动器进行分区
  • 【STM32+HAL】STM32CubeMX学习目录