<template>
<view>
<u-navbar
title="弹窗"
@leftClick="navigateBack"
safeAreaInsetTop
fixed
placeholder
></u-navbar>
<u-gap
height="20"
bgColor="#fff"
></u-gap>
<u-cell-group>
<u-cell
:titleStyle="{fontWeight: 500}"
@click="openPopup(item.popupData)"
:title="item.title"
v-for="(item, index) in list"
:key="index"
isLink
>
<image
slot="icon"
class="u-cell-icon"
:src="item.iconUrl"
mode="widthFix"
></image>
</u-cell>
</u-cell-group>
<u-popup
:safeAreaInsetBottom="true"
:safeAreaInsetTop="true"
:mode="popupData.mode"
:show="show"
:round="popupData.round"
:overlay="popupData.overlay"
:borderRadius="popupData.borderRadius"
:closeable="popupData.closeable"
:closeOnClickOverlay="popupData.closeOnClickOverlay"
@close="close"
@open="open"
>
<view
class="u-popup-slot"
:style="{
width: ['bottom', 'top'].includes(popupData.mode) ? '750rpx' : '200px',
marginTop: ['left', 'right'].includes(popupData.mode) ? '480rpx' : '0',
}"
>
<u-button
type="success"
text="点我关闭"
customStyle="width: 200rpx"
@click="show = !show"
></u-button>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
popupData: {
overlay: true,
mode: 'bottom',
borderRadius: '',
closeable: true,
closeOnClickOverlay: true
},
list: [{
popupData: {
overlay: true,
mode: 'top',
closeOnClickOverlay: true
},
title: '顶部弹出',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeTop.png'
},
{
popupData: {
overlay: true,
mode: 'right',
closeOnClickOverlay: true
},
title: '右侧弹出',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeRight.png'
},
{
popupData: {
overlay: true,
mode: 'bottom',
closeOnClickOverlay: true
},
title: '底部弹出',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeBottom.png'
},
{
popupData: {
overlay: true,
mode: 'left',
closeOnClickOverlay: true
},
title: '左侧弹出',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeLeft.png'
},
{
popupData: {
overlay: true,
mode: 'center',
round: 10,
closeOnClickOverlay: true
},
title: '居中弹出',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeCenter.png'
},
{
popupData: {
overlay: true,
mode: 'bottom',
round: 10,
closeOnClickOverlay: true
},
title: '显示圆角',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/showRadis.png'
},
{
popupData: {
overlay: true,
mode: 'bottom',
closeable: false,
closeOnClickOverlay: false
},
title: '禁止点击遮罩关闭',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/noClose.png'
},
{
popupData: {
overlay: true,
mode: 'bottom',
closeable: true,
closeOnClickOverlay: true
},
title: '显示关闭按钮',
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/showCloseBtn.png'
}
]
}
},
methods: {
openPopup(popupData) {
this.popupData = popupData
uni.$u.sleep().then(() => {
this.show = !this.show
})
},
navigateBack() {
uni.navigateBack()
},
open() {
// console.log('open');
},
close() {
this.show = false
// console.log('close');
}
}
}
</script>
<style lang="scss">
.u-popup-slot {
width: 200px;
height: 150px;
@include flex;
justify-content: center;
align-items: center;
}
</style>