Vue2 移动端(H5)项目封装弹窗组件

前言

vant-ui的dialog组件没有自定义footer插槽

效果

在这里插入图片描述

参数配置

1、代码示例:

<t-dialog :visible.sync="show" :title="title" @submit="submit"></t-dialog>

2、配置参数(t-dialog Attributes)

参数说明类型默认值
visible是否显示弹窗 (必须加.sync 修饰符)Booleanfalse
title弹窗标题String'-
width弹窗宽度String351px
height弹窗高度Stringauto
cancelButtonText取消按钮文字String取消
confirmButtonText确定按钮文字String确定
showCancelButton是否显示取消按钮Booleantrue
showConfirmButton是否显示确定按钮Booleantrue
isShowHeader是否显示头部Booleantrue
isShowMask是否显示遮罩层Booleantrue
isClickMaskClose是否点击遮罩关闭弹窗Booleantrue
isCloseMask是否显示标题右侧关闭iconBooleantrue
footer是否显示底部操作按钮(:footer=“null”)Object-

3、events 事件

事件名说明返回值
submit点击确定按钮-

4、slot 插槽

事件名说明返回值
titletitle插槽-
-默认内容区域插槽-
footer操作按钮插槽-

三、源码

<template><div class="t_dialog" v-if="isShow"><div class="dialog_content" :style="{width: width, height: height}"><div class="header_title" v-if="isShowHeader">{{ title }}<slot name="title" /><van-icon @click="closePopup" v-if="isCloseMask" name="cross" /></div><div class="content"><slot /></div><divclass="footer":class="{'footer-no-button': !showCancelButton||!showConfirmButton, 'footer-null': (!showCancelButton&&!showConfirmButton)}"v-if="(footer!==null)"><slot name="footer" /><template v-if="!$slots.footer"><van-button @click="closePopup" v-if="showCancelButton">{{cancelButtonText}}</van-button><van-button type="danger" @click="submit" v-if="showConfirmButton">{{confirmButtonText}}</van-button></template></div></div><div class="dialog-mask" v-if="isShowMask" @click="closeMask"></div></div>
</template>
<script>
export default {name: 'TDialog',props: {// 是否显示弹窗visible: {type: Boolean,default: false},// 弹窗标题title: {type: String,},width: {type: String,default: '351px'},height: {type: String,default: 'auto'},// 取消按钮文字cancelButtonText: {type: String,default: '取消'},// 确定按钮文字confirmButtonText: {type: String,default: '确定'},// 是否显示取消按钮showCancelButton: {type: Boolean,default: true},// 是否显示确定按钮showConfirmButton: {type: Boolean,default: true},// 是否显示头部isShowHeader: {type: Boolean,default: true},// 是否显示遮罩层isShowMask: {type: Boolean,default: true},// 是否点击遮罩关闭弹窗isClickMaskClose: {type: Boolean,default: true},// 是否显示关闭按钮isCloseMask: {type: Boolean,default: true},// 是否显示底部操作按钮 :footer="null"footer: Object,},computed: {isShow: {get() {return this.visible},set(val) {this.$emit('update:visible', val)}}},methods: {closePopup() {this.isShow = false},closeMask() {if (!this.isClickMaskClose) returnthis.isShow = false},submit() {this.$emit('submit')// this.isShow = false}},}
</script>
<style lang="scss" scoped>
.t_dialog {.dialog_content {position: fixed;top: 50%;left: 50%;-webkit-transform: translate3d(-50%, -50%, 0);transform: translate3d(-50%, -50%, 0);max-width: 100%;max-height: 100%;background-color: #fff;z-index: 1000;border-radius: 8px;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.7);}.header_title {height: 40px;padding: 0 20px;font-size: 16px;color: #101010;background: #fff;border-bottom: 1px solid #e5e5e5;display: flex;align-items: center;justify-content: center;position: relative;border-radius: 8px 8px 0 0;.van-icon {cursor: pointer;position: absolute;right: 20px;top: 50%;-webkit-transform: translateY(-50%);transform: translateY(-50%);font-size: 16px;color: #999;&:hover {color: #333;}}}.content {padding: 15px;width: calc(100% - 30px);overflow-y: auto;}.footer {height: 40px;line-height: 40px;color: #101010;background: #fff;border-top: 1px solid #e5e5e5;display: flex;justify-content: space-between;align-items: center;position: relative;border-radius: 0 0 8px 8px;button {flex: 0 50%;height: 40px;line-height: 40px;padding: 0;font-size: 16px;border: none;border-radius: 0 0 8px 0px;&:first-child {border-right: 1px solid #e5e5e5;border-radius: 0 0 0px 8px;}}.van-button--primary {color: #007aff;border: none;background-color: #fff;}.van-button--danger {color: #ff4444;border: none;background-color: #fff;}&.footer-no-button {button {flex: 0 auto;border: none;border-radius: 0 0 8px 8px;width: 100%;}}&.footer-null {display: none;}}.dialog-mask {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-color: #000;opacity: 0.7;z-index: 999;}
}
</style>

相关文章

基于ElementUi再次封装基础组件文档


基于ant-design-vue再次封装基础组件文档


vue3+ts基于Element-plus再次封装基础组件文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IS62C256AL-45TLI功能参数介绍及如何优化性能

IS62C256AL-45TLI功能和参数介绍及如何优化性能-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 产品品种:静态随机存取存储器 RoHS:是 存储容量:256 kbit 组织:32 k x 8 访问时刻:45 ns 接口类型:Parallel 电源电压-最大:5.5 V 电源电压-最小:4.5 V 电源电流—最大值:25 mA 最小…

JumpServer搭建堡垒机实战

文章目录 第一步、下载安装第二步、访问异常处理【1】docker方式拉取失败 JumpServer是运维人员可连接内部服务器上进行操作&#xff0c;支持Linux等操作系统的管理工具。 第一步、下载安装 curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/…

OpenCV-复数矩阵点乘ComplexMatrixDotMultiplication

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 需求说明 一般用到FFT&#xff0c;就涉及到复数的计算&#xff0c;为了便于调用&#xff0c;我自行封装了一个简单的复数矩阵点乘…

如何用网页绘制一个黑莓9900的键盘效果图

如何用网页绘制一个黑莓9900的键盘效果图 入了几个黑莓蓝牙键盘&#xff0c;出于喜好&#xff0c;想做一个跟实体键盘一模一样的网页界面。 最终的实现效果是这样的&#xff1a; 在线查看&#xff1a;http://kylebing.cn/tools/bb-keyboard 点击上面四个按键显示不同模型界面…

Linux 网络操作命令Telnet

Telnet 尽管 Telnet 已经逐渐被更安全的 SSH 协议所取代&#xff0c;但在某些特定场景下&#xff0c;如对旧系统的维护或教育目的&#xff0c;Telnet 仍然有其使用价值。本文将介绍如何在 Linux 系统中安装 Telnet 客户端&#xff0c;以及如何使用它进行远程登录。 用户使用 t…

Activiti——将绘制的流程图存入act数据库并进行流程推进与状态流转

文章目录 前言流程图入库操作 RepositoryService项目结构数据库连接配置文件入库Java测试代码zip 方式进行流程的批量部署 流程启动 RuntimeService待处理任务查看 TaskService流程状态的扭转查询流程定义信息 RepositoryService查询正在执行的流程实例 RuntimeService已部署流…

Springboot+Vue项目-基于Java+MySQL的在线文档管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

实测14us,Linux-RT实时性能及开发案例分享—基于全志T507-H国产平台

本文带来的是基于全志T507-H&#xff08;硬件平台&#xff1a;创龙科技TLT507-EVM评估板&#xff09;&#xff0c;Linux-RT内核的硬件GPIO输入和输出实时性测试及应用开发案例的分享。本次演示的开发环境如下&#xff1a; Windows开发环境&#xff1a;Windows 7 64bit、Window…

在 Linux 上通过 udev 规则绑定 ttyUSB 设备的相对地址

文章目录 问题描述解决方案1. 分辨当前 USB 设备的绝对地址2. 使用绝对地址查看设备属性3. 使用 udev 规则绑定设备到相对地址3.1. 区分多个不同型号 USB 设备3.2. 区分多个相同型号 USB 设备 问题描述 Linux 系统开机时会随机为连接的 USB 设备随机分配 /dev/ttyUSB* 这样的绝…

java学习之路-抽象类和接口

目录 前言 1.抽象类 1.2抽象类语法 1.3抽象类特性 1.4抽象类的作用 2.接口 2.1接口概念 2.2接口的定义 2.3接口的使用 接口使用栗子 2.4接口特性 2.5 实现多个接口 请看栗子 2.6接口间的继承 2.7接口使用实例 2.8Clonable 接口和深浅拷贝 2.9 抽象类和接口的区别…

华为是如何开经营分析会的?

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 企业不可避免开各种会议&#xff0c;而其中经营分析会对于企业发展至关重要。该会议主要是对企业经营目标进行复盘&#xff0c;需要公司全体上下共同重视&#xff0c;其目的是让企业集中力量&#xff0c;解…

Java | Leetcode Java题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; class Solution {public int searchInsert(int[] nums, int target) {int n nums.length;int left 0, right n - 1, ans n;while (left < right) {int mid ((right - left) >> 1) left;if (target < nums[mid]) {ans mi…

根据表格该列数据的长度动态变化该列的宽度;

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、代码前言 在使用elementui的表格将数据展示出来时,我们想根据表格该列数据的长度动态变化该列的宽度; 1.看了一下elementui文档有一个 width 的属性,可用它来修改对应列。 2.那么我们需要拿到该列的所有数据去比较…

java基础之类运行与双亲委派机制简介

一 类加载运行过程 通过java命令运行某个类的main函数来启动程序时&#xff0c;首先需要通过类加载器将主类加载到JVM中&#xff1b; 源码&#xff1a; package com.ddu.jvm;public class HelloWordHelper {public static void main(String[] args) {User user new User();…

初识java——jdk?环境变量?及关于安装jdk的步骤

文章目录 JDK的安装在安装JDK时遇到的问题&#xff1a; 背景知识一 什么是jdkjdk简介jdk文件详解&#xff1a;1 bin目录&#xff1a;2 lib目录&#xff1a;3 include目录.exe文件是可执行的应用程序&#xff0c;这个我们都清楚&#xff0c;但.dll文件又是做什么的呢&#xff1f…

数据结构学习之路--玩转队列的内核知识(附C源码)

嗨嗨大家~我又来啦&#xff01;今天为大家带来的是与队列相关的知识。我们马上进入知识的海洋~ 目录 前言 一、队列 1 队列的概念 2 队列的实现 2.1 队列的定义 2.2 队列的初始化 2.3 队列的判空 2.4 入队 2.5 出队 2.6 取队头元素 2.7 取队尾元素 2.8 取…

37、Tomato(VulnHub)

Tomato 一、nmap 2211是ssh的端口&#xff0c;21的ftp也不是弱密码 二、web渗透 随便看看 目录爆破 /seclists/Discovery/Web-Content/common.txt /antibot_image/antibots/readme.txt 发现该站点存在反爬机制 /antibot_image/antibots/info.php 提示我们该网页存在个参数 GET&…

SFP、SFP+、SFP28 与 QSFP28 收发器之间的差异:兼容性和性能

近年来&#xff0c;网络技术发展迅速&#xff0c;因此&#xff0c;计算专业人员面临着越来越令人困惑的术语和缩写词。 管理数据中心时必须了解的一个关键领域是收发器&#xff0c;特别是 SFP (1550nm/1310nm)、SFP (850nm) 和 QSFP28 (4x25G) 之间的差异。 这些型号在兼容性方…

深入浅出 SQL 优化:全面提升查询性能的技巧

文章目录 前言一、表结构分析1. 索引分析2. 数据类型分析3. 思考反范式设计的适用场景与潜在风险3.1数据冗余3.2 数据一致性3.3 更新性能 4. 关注临时表的创建与使用。4.1.尽量减少临时表的使用&#xff0c;以降低系统资源的消耗。4.2 使用合适的索引和数据类型优化临时表的性能…

HarmonyOS ArkUI实战开发-窗口模块(Window)

窗口模块用于在同一物理屏幕上&#xff0c;提供多个应用界面显示、交互的机制。 对应用开发者而言&#xff0c;窗口模块提供了界面显示和交互能力。对于终端用户而言&#xff0c;窗口模块提供了控制应用界面的方式。对于操作系统而言&#xff0c;窗口模块提供了不同应用界面的…