Skip to content

Popup 弹出层

基本使用

html
<be-popup v-model:visible="visible" position="center">
  <view class="popup-content">内容</view>
</be-popup>
ts
import { ref } from 'vue';

const visible = ref(false);
scss
.popup-content {
  width: 200px;
  height: 150px;
  background-color: #ffffff;
  border-radius: 8px;
  display: flex;
  justify-content: center;
  align-items: center;
}

自定义位置

html
<be-popup v-model:visible="visible" position="custom" :maskOpacity="0">
  <view class="popup-content" @click.stop>这是一段描述文本。</view>
</be-popup>
ts
import { ref } from 'vue';

const visible = ref(false);
scss
.popup-content {
  position: absolute;
  top: 60px;
  left: 24px;
  padding: 6px 10px;
  background-color: #ffffff;
  border-radius: 8px;
  display: flex;
  justify-content: center;
  align-items: center;

  &::before {
    content: '';
    display: block;
    width: 0px;
    height: 0px;
    border-left: 8px solid rgba(255, 255, 255, 0);
    border-right: 8px solid rgba(255, 255, 255, 0);
    border-top: 10px solid rgba(255, 255, 255, 0);
    border-bottom: 10px solid #ffffff;
    position: absolute;
    top: -20px;
    left: 20px;
  }
}

WARNING

限制:当position=custom时,弹出层内容根节点必须添加 @click.stop 阻止冒泡,否则点击事件会引起弹出层关闭。

API

Props

属性名说明类型默认值
visible(v-model)是否打开弹出层booleanfalse
position弹出层位置center | top | right | bottom | left | customcenter
width弹出层宽度,仅当position=left|right时生效css width-
height弹出层高度,仅当position=top|bottom时生效css height-
backgroundColor弹出层背景色,当position=center|custom时无效css background-color#ffffff
borderRadius弹出层圆角,当position=center|custom时无效css border-radius16rpx
maskOpacity弹出层遮罩透明度css opacity0.6
maskCloseAble点击遮罩是否关闭弹出层booleantrue
negativeTop居中时往上偏移量,仅当position=center时生效css top5%
animation是否开启动画booleantrue
animationDuration打开关闭弹框的动画时长(ms)number150
screenTopOffset弹出层距离屏幕顶部的偏移量css top0px
screenBottomOffset弹出层距离屏幕底部的偏移量css bottom0px

Events

事件名称说明回调参数
close弹出层关闭-
maskClickposition=custom时,点击遮罩-

Slots

插槽名说明slot props默认值
default弹出层内容-