写在前面
页面中会有很多时候需要弹窗提示,我们可以写一个弹窗组件,但是如果每个页面都引入这个组件,太麻烦了,所以我们将它变成全局组件,需要用的时候直接通过js调用即可,不需要在每个页面引入了
效果图
弹窗组件
新建一个弹窗的组件——popup.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
<template>
<transition name= 'fade' >
<!-- 蒙版 -->
<div class= "mask" v- if = "show" @touchmove.prevent>
<div class= "window" >
<img class= "shadow" :src= "imgurl" alt= "" >
<h1>{{title}}</h1>
<p>{{content}}</p>
<button @click= "btnclick" >{{btntext}}</button>
</div>
<img @click= "show = false" v-fb class= "close" src= "../../../pages/signin/dialog/images/关闭.png" alt= "" >
</div>
</transition>
</template>
<script>
export default {
name: 'app' ,
data () {
return {
show: false ,
imgurl: '' ,
title: '' ,
content: '' ,
btntext: '' ,
click: ''
}
},
created () {
},
methods: {
btnclick () {
this .click()
this .show = false
}
}
}
</script>
<style lang= "less" scoped>
@import "../../../assets/css/minx/minx" ;
@import "../../../assets/css/pixel/pixel" ;
// 渐变过渡
.fade-enter,
.fade-leave-active {
opacity: 0;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity .35s;
}
// 全局弹窗
.mask {
.fixed;
z-index: 10;
background:rgba(0,0,0,0.65);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 75/75rem;
.window{
height: 400/75rem;
width: 100%;
background: #fff;
border-radius:8px;
text-align: center;
.shadow{
width: 270/75rem;
margin-top: -90/75rem;
}
h1{
margin-top: 32/75rem;
font-size:32/75rem;
color: #f1300b;
line-height:32/75rem;
font-weight: 600;
}
p{
margin-top: 32/75rem;
font-size:28/75rem;
color: #222222;
line-height:40/75rem;
}
button{
margin-top: 34/75rem;
background: #f95644;
border-radius:10px;
width:23/75remx;
height:64/75rem;
font-size:28/75rem;
color: #ffffff;
}
}
.close{
width:60/75rem;
height:60/75rem;
margin-top: 40/75rem;
}
}
</style>
|
popup.js文件
新建一个popup.js文件,写方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import vue from 'vue'
import popup from './popup.vue'
const popupbox = vue.extend(popup)
popup.install = function (data) {
let instance = new popupbox({
data
}).$mount()
document.body.appendchild(instance.$el)
vue.nexttick(() => {
instance.show = true
// show 和弹窗组件里的show对应,用于控制显隐
})
}
export default popup
|
main.js引入popup.js
1
2
3
4
|
// 自定义全局弹窗组件
import vue from 'vue'
import popup from './components/dialog/popup'
vue.prototype.$popup = popup.install
|
组件中使用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
methods: {
btnclick () {
this .$popup({
imgurl: require( '../../../static/images/shadow.png' ), // 顶部图片
title: '我是标题' ,
content: '我是内容' ,
btntext: '我是按钮' ,
click: () => {
// 点击按钮事件
this .$router.push( '……' )
}
})
}
}
|
方便以后自己使用,大家也可以参考哦,也希望大家多多支持服务器之家,谢谢~~
原文链接:https://blog.csdn.net/weixin_43931876/article/details/90600971