• Vant React

Popup 弹出层

介绍

弹出层容器,用于展示弹窗、信息提示等内容,支持多个弹出层叠加展示。

引入

import { Popup } from "@taroify/core"

代码演示

基础用法

通过 open 控制弹出层是否展示。

<Popup open>内容</Popup>

弹出位置

通过 placement 属性设置弹出位置,默认居中弹出,可以设置为 topbottomleftright

<Popup defaultOpen placement="top" style={{ height: "30%" }} />

关闭图标

设置 Popup.Close 属性后,会在弹出层的右上角显示关闭图标,并且可以通过 closeIcon 属性自定义图标。

<Popup defaultOpen placement="bottom" style={{ height: '30%' }}>
  <Popup.Close />
</Popup>

<!-- 自定义图标 -->
<Popup defaultOpen placement="bottom" style={{ height: '30%' }}>
  <Popup.Close>
    <Close />
  </Popup.Close>
</Popup>

圆角弹窗

设置 rounded 属性后,弹窗会根据弹出位置添加不同的圆角样式。

<!-- 圆角弹窗(居中) -->
<Popup
  open
  style={{
    padding: "64px",
  }}
  rounded
  lock={false}
>
  内容
</Popup>

<!-- 圆角弹窗(底部) -->
<Popup open rounded placement="bottom" style={{ height: '30%' }} />

禁止滚动穿透

<Popup lock>
  <View>无法滑动</View>
</Popup>

如果需要内容支持溢出滚动,则需要包裹一层 ScrollView 组件。

<Popup lock>
  <ScrollView>可以滑动</ScrollView>
</Popup>

API

参数说明类型默认值
defaultOpen默认是否显示弹出层booleanfalse
open是否显示弹出层booleanfalse
placement弹出位置,可选值为 top bottom right left centerstringcenter
duration动画时长,单位毫秒number | string300
rounded是否显示圆角booleanfalse
lock是否锁定背景滚动booleantrue

动画相关参数继承自 Transition 组件,详细属性参见:Transition 组件

Popup参数Transition对应参数
mountOnEntermountOnEnter
transactionNamename
transitionAppearappear
transactionTimeouttimeout
onTransitionEnteronEnter
onTransitionEnteredonEntered
onTransitionExitonExit
onTransitionExitedonExited

Popup.Backdrop Props

参数说明类型默认值
className背景板类名stringfalse
style背景板样式CSSPropertiesfalse
open是否显示背景板booleanfalse
closeable是否在点击遮罩层后关闭booleantrue
duration动画时长,单位毫秒number | string300

Popup.Close Props

参数说明类型默认值
placement关闭图标位置,可选值 top-left bottom-left bottom-rightstringtop-right
children图标内容ReactNode<Cross />

Events

事件名说明回调参数
onClick点击弹出层时触发event: ITouchEvent
onClose关闭弹出层时触发-

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。

名称默认值描述
—popup-z-index1010-
—popup-background-colorvar(—background-color-light)-
—popup-animation-durationvar(—animation-duration-base)-
—popup-rounded-border-radius16px * $hd-
—popup-close-icon-z-index1-
—popup-close-icon-size22px * $hd-
—popup-close-icon-colorvar(—gray-5)-
—popup-close-icon-active-colorvar(—gray-6)-
—popup-close-icon-margin16px * $hd-