vue实现自定义"模态弹窗"组件实例代码
作者:禾小毅 发布时间:2024-04-30 10:26:05
标签:vue,自定义,弹窗组件
前言
对话框是很常用的组件 , 在很多地方都会用到,一般我们可以使用自带的alert来弹出对话框,但是假如是设计出的图该怎么办呢 ,所以我们需要自己写一个对话框,下面来一起看看详细的实现过程。
效果图
以上截图,红色边框部分,表示 “文字、图标或者图片” 是可更改部分
实例代码
一、创建弹窗组件 quitDialog.vue 组件
<template>
<transition-group name='fade'>
<!-- 退出弹窗 -->
<div class="quit_dialog"
key="1"
@click="isQuit = false"
v-if="isQuit"
@touchmove.prevent>
</div>
<div class="quit_box"
v-show="isQuit"
key="2">
<img :src="imgUrl"
:alt="imgLoadTip">
<div class="quit_title">{{title}}</div>
<p>{{content}}</p>
<button class="quit_btn" @click="leftClick">{{btnText}}</button>
<button class="quit_close" @click="rightClick">{{rightText}}</button>
</div>
</transition-group>
</template>
<script>
export default {
name: 'Popup',
data () {
return {
isQuit: false,
imgUrl: '',
title: '',
content: '',
btnText: '',
rightText: ''
}
},
methods: {
leftClick () {
this.leftBtn()
this.isQuit = false
},
rightClick () {
this.rightBtn()
this.isQuit = false
}
}
}
</script>
<style lang="scss" scoped>
// 退出弹窗
.fade-enter,
.fade-leave-active {
opacity: 0;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.35s;
}
// 全局弹窗
.quit_dialog {
background: rgba(0,0,0,.5);
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 10000;
}
.quit_box {
width: 700px;
background: #fff;
position: fixed;
top: 50%;
left: 50%;
margin-left: -350px;
margin-top: -190px;
z-index: 10001;
border-radius: 10px;
text-align: center;
padding: 50px;
img{
width: 80px;
}
.quit_title{
color: #666;
font-size: 28px;
margin: 45px 0px;
}
button {
border-radius: 32px;
padding:20px 0px;
font-size: 26px;
border-radius: 8px;
width: 214px;
}
.quit_btn{
color: #03BA82;
background: #fff;
border: 1px solid #03BA82;
margin-right: 32px;
}
.quit_close {
background: linear-gradient(0deg, #03BA82, #01D695);
box-shadow: 0px 3px 4px 0px rgba(1, 84, 58, 0.27);
border: 1px solid #03BA82;
color: #fff;
}
}
</style>
二、创建 graspDialog.js
import Vue from 'vue'
import Grasp from '../components/QuitDialog/QuitDialog'
const PopupBox = Vue.extend(Grasp)
Grasp.install = function (data) {
let instance = new PopupBox({
data
}).$mount()
document.body.appendChild(instance.$el)
Vue.nextTick(() => {
instance.isQuit = true
// isQuit 和弹窗组件里的isQuit对应,用于控制显隐
})
}
export default Grasp
三、在全局 main.js 引入
import Vue from 'vue'
import Popup from './api/quitDialog'
Vue.prototype.$popup = Popup.install
四、页面中调用,只需在函数中调用即可
methods: {
graspBtn () {
this.$grasp({
imgUrl: require('../../assets/home/quits.png'), // 顶部图片.
imgLoadTip: '图片加载中...',
content: '温馨提示',
title: '注意:该学习任务未完成,是否确认退出',
btnText: '残忍退出',
rightText: '继续学习',
// 左边点击事件
leftBtn: () => {
this.$store.dispatch('user/logout').then(() => {
this.$signalr.LogoutPad()
this.$signalr.SendMsg(2, 0, '退出系统')
this.$router.push('/login')
})
},
// 右边点击事件
rightBtn: () => {}
})
}
}
来源:https://blog.csdn.net/weixin_50450473/article/details/121904203


猜你喜欢
- 1、先介绍如何用PHP连上数据库(数据库用户名“root”,密码“sun”,有库“myguestbook”) 图62、PHP和My
- 写在前面在QQ群,微信群,论坛中经常帮助使用SQL Server数据库的朋友解决问题,但是有一些最常见最基本的问题,每天都有人问,回答多了也
- Sample:http://www.happyshow.org/sample/20060613/nav/nav.html<!DOCTY
- 一、跨域是什么从一个域名去请求另一个域名,这个过程称之为跨域。浏览器从一个域名的网页去请求另一个域名的资源,域名、端口、协议有一个不一样,请
- logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。其主
- 当你标记了翻译字符串,你就需要写出(或获取已有的)对应的语言翻译信息。 这里就是它如何工作的。地域限制Django不支持把你的应用本地化到一
- 1. 非 matlab v7.3 files 读写import scipy.io as sioimport numpy# matFile 读
- # -*- coding: utf-8 -*- #mysqldb &nb
- 今天刚看到ChinaUI.com新改版的网站,觉得优艾网是越来越漂亮了,这次的变化的确是挺大的。一早大概的看了一下就关了,后来晚上又打开看时
- 在家里windows环境下搞了一次见 python MySQLdb在windows环境下的快速安装、问题解决方式ht
- 前言最近做了一个爬取妹子套图的小功能,小伙伴们似乎很有兴趣,为了还特意组建了一个Python兴趣学习小组,来一起学习。十个python九个爬
- lambda 函数Python 支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做 lambda 的函数,是从 Lisp 借用来的
- python 将字典写为json文件字典结构如下res = { "data":[]}temp
- 装饰器的作用就是用一个新函数封装旧函数(是旧函数代码不变的情况下增加功能)然后会返回一个新函数,新函数就叫做装饰器,一般为了简化装饰器会用语
- 这篇文章为大家提供了Mysql的安装包,详细的安装步骤,以及安装过程中出现的问题的解决方案,希望对大家有所帮助......工具:Mysql
- 本文实例讲述了python对数组进行反转的方法。分享给大家供大家参考。具体实现方法如下:arr = [1,2,3]arr.reverse()
- 如下所示:list=[1,2,3,4,5,6,7,8,9,0,11,0,13,14,15,16,17,18,19,20]#把list分为长度
- 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。
- 如何在 git 中取消 pycache 文件如果使用 PyCharm 运行代码,会在 Python 脚本所在目录生成 __pycache__
- 本文实例为大家分享了python xlsxwriter创建excel图表的具体代码,供大家参考,具体内容如#coding=utf-8 imp