展示类 · SideSheet
滑动侧边栏
可从屏幕边沿滑出的浮层面板,通常用于承载二级操作页面

代码演示

如何引入

基本

默认侧边栏从右滑出,支持点击遮罩区关闭。

自定义位置

可以通过设置 placement 属性设置侧边栏滑出位置,支持top, bottom, left, right

自定义尺寸

可以通过设置 size 属性设置侧边栏尺寸,支持 small(448px), medium(684px), large(920px),仅在 placementleftright 时生效。若默认的尺寸不满足你的需求,你还可以通过设置 width 属性自行设置宽度,例如 width={900} / width={'800px'}

可操作的外部区域

mask={false}时允许对外部区域进行操作。
注意
当 SideSheet 是默认渲染在 body 中时(即不传入 getPopupContainer 参数),会在打开时自动给 body 添加 overflow: hidden 来禁止滚动。如果你希望外部区域依然可滚动,可以将 disableScroll 设为false

渲染在指定容器

可以通过 getPopupContainer 指定父级 DOM,弹层将会渲染至该 DOM 中。
注意
容器需要手动设置样式 `overflow: hidden`,否则会导致动画溢出

自定义内容区域

可以通过自定义 titlefooter 等创建出丰富的内容样式。

API 参考

属性说明类型默认值
afterVisibleChange面板展示/隐藏时动画结束触发的回调(isVisible: boolean) => void-
bodyStyle面板内容的样式CSSProperties-
className类名string-
closable是否允许通过右上角的关闭按钮关闭booleantrue
closeIcon关闭按钮的 iconReactNode<IconClose />
closeOnEsc允许通过键盘事件 Esc 触发关闭booleanfalse
disableScroll默认渲染在 document.body 层时是否禁止 body 的滚动,即给 body 添加 overflow: hiddenbooleantrue
footer侧边栏底部ReactNodenull
getPopupContainer指定父级 DOM,弹层将会渲染至该 DOM 中,自定义需要设置 position: relative 这会改变浮层 DOM 树位置,但不会改变视图渲染位置。() => HTMLElement-
headerStyle面板头部的样式CSSProperties-
height高度,位置为 topbottom 时生效number | string400
keepDOM关闭 SideSheet 时是否保留内部组件不销毁booleanfalse
mask是否显示遮罩,当 mask={false} 时允许对外部区域进行操作booleantrue
maskClosable是否允许通过点击遮罩来关闭面板booleantrue
maskStyle遮罩的样式CSSProperties-
motion是否允许动画booleantrue
placement侧边栏滑出位置,支持top, bottom, left, rightstringright
size尺寸,支持 small(448px), medium(684px), large(920px),仅在 leftright 时生效stringsmall
style可用于设置样式CSSProperties-
title面板的标题ReactNode-
visible面板是否可见booleanfalse
width宽度,位置为 leftright 时生效number | string448
zIndex弹层 z-index 值number1000
onCancel取消面板时的回调函数(e: MouseEvent) => void-

Accessibility

ARIA

  • SideSheet 具有 dialog role 来表示它是一个弹窗组件, 内部 header 具有 heading role 表明是 header。

设计变量

FAQ:

  • SideSheet 会自动禁止 body 的滚动吗?当 SideSheet 是默认渲染在 body 中时(即不传入 getPopupContainer 参数),会在打开时自动给 body 添加 overflow: hidden 来禁止滚动。可以通过 disableScroll={false} 允许滚动。