uniapp全局弹窗组件
时间: 2023-12-08 19:05:15 浏览: 138
根据提供的引用内容,uniapp全局弹窗组件可以通过以下步骤实现:
1.在项目中创建一个公共组件,可以命名为invite.vue,组件的结构和样式可以参考提供的引用。
2.在main.js中导入invite.js,并安装插件Vue.use(invite)。
3.在需要弹出组件的任何组件内调用this.$openInvite()即可弹出组件,调用this.$closeInvite()即可关闭组件。
下面是一个范例代码,供参考:
1. invite.vue组件代码:
```html
<template>
<div class="invite-mask" v-show="isShow">
<div class="invite-container">
<div class="invite-header">
<span class="invite-title">邀请好友</span>
<img class="invite-close" src="./static/images/close.png" @click="closeInvite" />
</div>
<div class="invite-content">
<img class="invite-img" src="./static/images/invite.png" />
<p class="invite-text">邀请好友注册,双方都可获得优惠券</p>
<button class="invite-btn" @click="closeInvite">知道了</button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isShow: false
}
},
methods: {
openInvite() {
this.isShow = true
},
closeInvite() {
this.isShow = false
}
}
}
</script>
<style>
.invite-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999;
}
.invite-container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 80%;
max-width: 400px;
background-color: #fff;
border-radius: 10px;
overflow: hidden;
}
.invite-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
background-color: #f5f5f5;
}
.invite-title {
font-size: 16px;
font-weight: bold;
}
.invite-close {
width: 20px;
height: 20px;
cursor: pointer;
}
.invite-content {
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
}
.invite-img {
width: 80%;
margin-bottom: 20px;
}
.invite-text {
font-size: 14px;
color: #666;
margin-bottom: 20px;
}
.invite-btn {
width: 80%;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #ff9900;
color: #fff;
border-radius: 20px;
cursor: pointer;
}
</style>
```
2. invite.js代码:
```javascript
import Invite from '@/components/invite'
const install = function(Vue) {
Vue.component('Invite', Invite)
Vue.prototype.$openInvite = function() {
this.$refs.invite.openInvite()
}
Vue.prototype.$closeInvite = function() {
this.$refs.invite.closeInvite()
}
}
export default {
install
}
```
3. main.js代码:
```javascript
import Vue from 'vue'
import App from './App'
import Invite from './utils/invite'
Vue.use(Invite)
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
```
阅读全文