Popup 弹出层
该组件用于展示弹窗、信息提示等内容,支持上、下、左、右和中部弹出。组件只提供容器,内部内容由用户自定义,超强扩展性,丝滑的动画。
平台兼容性
App(vue) | App(nvue) | H5 | 小程序 | VUE2 | VUE3 |
---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ |
基本使用
- 弹出层的内容通过
slot
传入,由用户自定义 - 通过
ref
调用open()
和close()
控制弹出层的打开和关闭
vue
<template>
<view>
<wu-popup ref="popup" @change="change">
<view>
<text>
君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我侧耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
</text>
</view>
</wu-popup>
<button @click="open">打开</button>
</view>
</template>
<script>
export default {
methods: {
open(){
this.$refs.popup.open('top');
},
change(e){
console.log('弹窗状态改变:',e);
}
}
}
</script>
<template>
<view>
<wu-popup ref="popup" @change="change">
<view>
<text>
君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我侧耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
</text>
</view>
</wu-popup>
<button @click="open">打开</button>
</view>
</template>
<script>
export default {
methods: {
open(){
this.$refs.popup.open('top');
},
change(e){
console.log('弹窗状态改变:',e);
}
}
}
</script>
设置弹出层的方向
- 通过
mode
属性设置,可以设置为left
、top
、right
、bottom
、center
,默认center
- 还可以通过
open()
方法传一个参数用来代替 mode 属性,例如上述的基本使用。
vue
<template>
<view>
<wu-popup ref="popup" mode="center" @change="change">
<view style="width: 600rpx;">
<text>
君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我侧耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
</text>
</view>
</wu-popup>
<button @click="open">打开</button>
</view>
</template>
<script>
export default {
methods: {
open(){
this.$refs.popup.open();
},
change(e){
console.log('弹窗状态改变:',e);
}
}
}
</script>
<template>
<view>
<wu-popup ref="popup" mode="center" @change="change">
<view style="width: 600rpx;">
<text>
君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我侧耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
</text>
</view>
</wu-popup>
<button @click="open">打开</button>
</view>
</template>
<script>
export default {
methods: {
open(){
this.$refs.popup.open();
},
change(e){
console.log('弹窗状态改变:',e);
}
}
}
</script>
禁用点击遮罩关闭
默认情况下,点击遮罩会自动关闭弹窗,如不想点击关闭,只需将 closeOnClickOverlay
设置为 false
,这时候要关闭 wu-popup
,只能手动调用 close()
方法。
vue
<template>
<view>
<wu-popup ref="popup" :close-on-click-overlay="false">
<view style="width: 600rpx;">
<text>
君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我侧耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
</text>
<button @click="close">关闭</button>
</view>
</wu-popup>
<button @click="open">打开</button>
</view>
</template>
<script>
export default {
methods: {
open(){
this.$refs.popup.open();
},
close(){
this.$refs.popup.close();
}
}
}
</script>
<template>
<view>
<wu-popup ref="popup" :close-on-click-overlay="false">
<view style="width: 600rpx;">
<text>
君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我侧耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
</text>
<button @click="close">关闭</button>
</view>
</wu-popup>
<button @click="open">打开</button>
</view>
</template>
<script>
export default {
methods: {
open(){
this.$refs.popup.open();
},
close(){
this.$refs.popup.close();
}
}
}
</script>
API
Popup Props
属性名 | 说明 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
mode | 弹出模式:top - 顶部弹出、bottom - 底部弹出、 left - 左侧弹出、 right - 右侧弹出、 center - 中间弹出 | String | center | top / bottom / left / right / center |
duration | 动画时长,单位ms | String / Number | 300 | - |
overlay | 是否显示遮罩 | Boolean | true | true / false |
overlayStyle | 遮罩层样式:一般用于修改遮罩颜色,如:{background: 'rgba(3, 100, 219, 0.5)'} | Object / String | - | - |
overlayOpacity | 遮罩透明度,0-1 之间,勿与 overlayStyle 共用 | Number / String | 0.5 | - |
closeOnClickOverlay | 点击遮罩是否关闭弹窗 | Boolean | true | true / false |
zIndex | 弹出层的z-index值 | Number | String | 10075 |
safeAreaInsetTop | 是否留出顶部安全区(状态栏高度) | Boolean | false | true / false |
safeAreaInsetBottom | 是否为留出底部安全区适配 | Boolean | true | true / false |
closeable | 是否显示关闭图标 | Boolean | false | true / false |
closeIconPos | 自定义关闭图标位置,top-left - 左上角,top-right - 右上角,bottom-left - 左下角,bottom-right - 右下角 | String | top-right | top-right / top-left / bottom-left / bottom-right |
zoom | 当mode=center时 是否开启缩放 | Boolean | true | true / false |
bgColor | 背景色,设置为""或none可去除默认的白色背景 | String | none | - |
round | 设置圆角值,仅对 mode = top | bottom | center有效 | Number / String 0 |
customStyle | 定义内容区需要用到的外部样式 | Object | - | - |
Popup Methods
方法名 | 说明 | 参数 |
---|---|---|
open | 打开弹出层 | open(type: String), 如有参数将替代mode属性 |
close | 关闭弹出层 | - |
Popup Events
事件名 | 说明 | 回调参数 |
---|---|---|
change | 弹出层状态发生变化时触发 | e = {show: true | false, type: 当前mode} |
maskClick | 点击遮罩层触发 | - |
Popup Slots
插槽名 | 说明 |
---|---|
default | 自定义内容 |