Skip to content
在新窗口打开实时预览

Popup 弹出层 ​

基于 Overlay 与 Transition 的正式弹层,支持中心和四边弹出、圆角、关闭图标、安全区以及完整生命周期。

使用建议 ​

Popup 适合承载需要暂时打断页面的补充内容。简单反馈优先使用 Toast 或 Modal;复杂长流程应进入独立页面,避免在多层弹窗中继续嵌套弹窗。

平台兼容性 ​

H5App微信小程序支付宝小程序
√√√√

基础用法 ​

vue
<snake-popup v-model="visible" mode="bottom" round closeable safe-area-inset-bottom>
  <view class="panel">弹层内容</view>
</snake-popup>

关闭按钮、遮罩和业务操作都可关闭弹层。H5 中打开复杂表单弹层后,业务页面应将焦点移入弹层;关闭后恢复到触发按钮。不可只依赖滑动手势关闭。

默认通过遮罩阻止背景区域触摸滚动。嵌套滚动容器等特殊场景可设置 :lock-scroll="false",并由业务自行处理背景滚动。

无障碍 ​

  • 打开后将焦点移入弹层,关闭后恢复到触发按钮;H5 业务层还应为弹层提供明确标题。
  • 保留关闭按钮、遮罩或业务操作中的至少一种可见关闭方式,不要只依赖滑动手势。
  • 弹层打开时阻止背景滚动和误触;关闭动画结束后再恢复背景交互。

API ​

Props ​

参数说明类型默认值
modelValue / show显示状态和兼容别名booleanfalse
mode弹出方向stringcenter
duration / zIndex / bgColor动画、层级和背景多类型300 / 10075 / 主题表面色
round / zoom圆角与中心缩放多类型false / true
closeable / closeIcon / closeIconPos关闭按钮参数多类型false / close / top-right
closeOnClickOverlay点击遮罩关闭booleantrue
overlay / overlayOpacity / overlayStyle遮罩参数多类型true / 0.5 / ''
embedded嵌入页面模式booleanfalse
rootPortal传送到页面根节点渲染,避免被祖先 transform/overflow 裁剪booleanfalse
lockScroll阻止遮罩触摸滚动booleantrue
safeAreaInsetBottom / safeAreaInsetTop安全区booleanfalse
customClass / customStyle面板类名和样式多类型''

round 为数字或字符串时按 rpx 处理,true 使用主题大圆角令牌。center 模式四角全圆;四边模式只圆远离屏幕边缘的一侧。四边弹层进出场为整块滑入或滑出。

Events ​

事件名说明参数
update:modelValue更新 v-modelboolean
update:show更新兼容状态 showboolean
open / close显示状态开始变化-
opened / closed进入或离开动画完成-
before-enter / enter进入动画开始前 / 开始-
before-leave / leave离场动画开始前 / 开始-
change显示状态改变{ show }
click-overlay点击遮罩原生事件

Slots ​

名称说明
default弹层内容

Expose ​

方法说明
open()打开弹层
close()关闭弹层

主题变量 ​

变量用途
--snake-color-surface默认面板背景
--snake-color-text-muted默认关闭图标颜色
--snake-radius-largeround="true" 的圆角
--snake-z-index-popup样式层的默认弹层层级

为 uni-app 商城与 CMS 场景设计