跳到主要内容

弹出层 Popup

弹出层容器,用于展示弹窗等信息。提供 popup 与 popoup-titlebar 2个组件,可以单独配置。

安装使用

import { TiPopup, TiPopupTitlebar } from '@titian-design/mobile-react';

用法示例

基本用法

import { useState } from 'react';

const App: React.FC = () => {
const [visible, setVisible] = useState(true);
const onClose = () => {
setVisible(false);
}
return (
<>
<TiPopup
visible={visible}
closeOnMask={true}
onClose={onClose}
position="bottom"
>
<div >内容演示</div>
</TiPopup>
</>
);
}

使用 TiPopupTitlebar

import { useState } from 'react';

const App: React.FC = () => {
const [visible, setVisible] = useState(true);
const onClose = () => {
setVisible(false);
}
return (
<>
<TiPopup visible={visible} closeOnMask={true} onClose={onClose} position="bottom">
<TiPopupTitlebar
title="标题"
subTitle="副标题"
confirmText="确认"
cancelText="取消"
variant="with-confirm"
onCancel={onClose}
onConfirm={onClose}
/>
<div>内容演示</div>
</TiPopup>
</>
);
}

阻止滚动穿透 - 方式 1

备注

通过配置 preventScroll 属性,在打开弹窗时,设置 document.body.style.overflow = 'hidden',从而实现阻止滚动穿透;

对于需要滚动的区域,使用 CSS 属性 overflow-y: auto 实现。

import { useState } from 'react';

const App: React.FC = () => {
const [visible, setVisible] = useState(true);
const onClose = () => {
setVisible(false);
}
return (
<>
<TiPopup
visible={visible}
closeOnMask={true}
onClose={onClose}
position="bottom"
preventScroll={true}
disableGlobalTouchMove={false}
>
<div>阻止滚动区域</div>

<div style={{ height: '100px', overflowY: 'auto'}}>
<div id="demo1" style={{ height: '200px'}}>
可滚动区域,不会穿透
</div>
</div>
</TiPopup>
</>
);
}

阻止滚动穿透 - 方式 2

备注

通过配置 disableGlobalTouchMove 属性为 true,在打开弹窗时,禁用全局 touch 事件,从而实现阻止滚动穿透;

对于需要滚动的区域,使用 <TiScrollView/> 组件实现。

import { useState } from 'react';

const App: React.FC = () => {
const [visible, setVisible] = useState(true);
const onClose = () => {
setVisible(false);
}
return (
<>
<TiPopup
visible={visible}
closeOnMask={true}
onClose={onClose}
position="bottom"
preventScroll={false}
disableGlobalTouchMove={true}
>
<div>阻止滚动区域</div>

<TiScrollView scrollY extStyle="--scroll-view-height: 100px;">
<div id="demo1" style={{ height: '200px'}}>
可滚动区域,不会穿透
</div>
</TiScrollView>
</TiPopup>
</>
);
}

TiPopup API

属性 Properties

名称类型必填默认值说明备注
maskZIndexnumber10000遮罩 z-index 层级-
contentZIndexnumber10001内容 z-index 层级-
hasMaskbooleantrue是否显示遮罩-
visiblebooleanfalse是否显示弹出层-
preventScrollbooleantrue是否锁定背景滚动;实现上采用 document.body.style.overflow = 'hidden' 方式,内部可以滚动。-
disableGlobalTouchMovebooleanfalse是否锁定背景滚动;实现上禁用了全局 touch 事件方式;内部需要配合 <TiScrollView/> 组件实现滚动能力。-
closeOnMaskbooleantrue是否在点击遮罩层后关闭-
timeoutnumber300动画时间,默认单位为 ms-
timingFunctionstringlinear动画效果,即 CSS 的属性-
positionstringcenter弹出位置,可选值为 top bottom right left center-
extMaskStylestring-自定义遮罩层样式-
extContentStylestring-自定义弹出层样式-
transitionstring-过渡动画类型-
destroyOnClosebooleanfalse关闭后是否销毁--
safeAreabooleantrue使用底部安全栏-
teleportElementdocument.bodyDOM 挂载节点-

事件 Events

事件名返回值描述
onShow-弹窗展示时触发
onClose-点击遮罩关闭时触发
onEnter-入场动画开始时触发
onEntered-入场动画结束时触发
onExit-出场动画开始时触发
onExited-出场动画结束时触发

插槽 Slots

名称说明备注
default默认插槽-

外部样式类 External Classes

名称说明备注
extClass内容区容器样式类-
extContentClass内容区样式类-
extMaskClass蒙层样式类-

CSS 变量 CSS Variables

变量默认值说明备注
--popup-mask-bg-colorvar(--neutral-color-1, #212121)蒙层背景色-
--popup-mask-opacity0.8蒙层背景色透明度-
--popup-radius@radius-16内容区圆角-
--popup-box-bg-colorvar(--neutral-color-9, #ffffff)内容区背景色-
--popup-vertical-width100%内容区宽度;position 为 up|bottom 时生效-
--popup-vertical-min-height200px内容区最小高度;position 为 up|bottom 时生效-
--popup-vertical-max-heightcalc(100% - 200px)内容区最大高度;position 为 up|bottom 时生效-
--popup-horizontal-height100vh内容区高度;position 为 left|right 时生效-
--popup-horizontal-min-width50px内容区最小宽度;position 为 left|right 时生效-
--popup-horizontal-max-width100%内容区最大宽度;position 为 left|right 时生效-

TiPopupTitlebar API

属性 Properties

名称类型必填默认值说明备注
titlestring-标题-
subTitlestring-副标题-
variantstringwith-confirm标题栏类型,可选值with-confirmcancel-only
confirmTextstring'确定'确认按钮的文案-
cancelTextstring'取消'取消按钮的文案-
extStylestring-根节点样式-

variant 枚举含义:

含义
with-confirm标题+确定+取消
cancel-only标题+关闭
mini-close仅关闭

事件 Events

事件名返回值描述
onCancel-点击关闭按钮时触发
onConfirm-点击确认按钮时触发
onClose-点击关闭按钮时触发

CSS 变量 CSS Variables

变量默认值说明备注
--popup-title-bar-confirm-colorrgb(var(--theme-r, 250), var(--theme-g, 44), var(--theme-b, 25))确认按钮颜色-
--popup-title-bar-cancel-colorvar(--neutral-color-2, #757575)取消按钮颜色-
--popup-title-bar-back-colorvar(--neutral-color-2, #757575)返回按钮颜色-
--popup-title-bar-mini-close-padding36px 36px 36px 0关闭按钮的padding-