Drawer 抽屉
一个从页面边缘滑动出来的面板,可以替代 Modal 呈现更多内容。
获取组件
import { Drawer } from 'rsuite';Drawer>抽屉的容器。Drawer.Body抽屉的内容。Drawer.Actions抽屉的操作按钮, 一般放置在抽屉的头部。(可选)Drawer.Header抽屉的头部, 包含关闭按钮。(可选)Drawer.Title抽屉的标题, 一般放置在抽屉的头部。 (可选)
演示
默认
背景板
控制抽屉背景板的行为:
true:显示背景,点击背景会关闭抽屉false:不显示背景'static':显示背景,但点击背景不会关闭抽屉
显示位置
抽屉可以从屏幕的四个方向滑出:top、right、bottom、left。
尺寸
通过 size 属性可以设置抽屉的宽度(或高度,取决于 placement 属性)。
带表单的抽屉
在抽屉中放置表单,适合需要用户输入的场景。
响应式
在移动设备上,Drawer 的最大宽度会撑满屏幕。
可访问性
ARIA 属性
- Drawer 组件的
role属性为dialog。 - 使用
aria-labelledby属性关联 Drawer.Title。 - 使用
aria-describedby属性为 Drawer.Body 提供描述信息。
键盘交互
- ESC 可以关闭 Drawer,同时也可以通过设置
keyboard=false禁用此功能。 - Tab 在 Drawer 打开时,焦点会自动移至 Drawer 内部。按 Tab 键可在 Drawer 内的可聚焦元素之间移动焦点。
- Shift + Tab 反向循环聚焦 Drawer 内的可聚焦元素。
- 当 Drawer 关闭时,焦点会返回到触发打开 Drawer 的元素上。
Props
<Drawer>
| 属性名称 | 类型 (默认值) |
描述 |
|---|---|---|
| as | ElementType ('div') |
以对 Drawer 使用自定义元素类型 |
| autoFocus | boolean (true) |
当设置为 true, Drawer 被打开是自动焦点移到其自身,辅助屏幕阅读器容易访问 |
| backdrop | boolean | 'static' | 当设置为 true,Drawer 打开时会显示背景,点击背景会关闭 Drawer,如果不想关闭 Drawer,可以设置为 'static' |
| backdropClassName | string | 为背景设置一个自定义 className |
| classPrefix | string ('drawer') |
组件 CSS 类的前缀 |
| closeButton | ReactNode | boolean | 自定义关闭按钮,设置为 false 时不显示关闭按钮 |
| container | HTMLElement | (() => HTMLElement) | 设置渲染的容器 |
| enforceFocus | boolean (true) |
当设置为 true, Drawer 将防止焦点在打开时离开,辅助屏幕阅读器容易访问 |
| keyboard | boolean | 按下 esc 键时关闭 Drawer |
| onClose | () => void | 隐藏时的回调函数 |
| onEnter | () => void | 显示前动画过渡的回调函数 |
| onEntered | () => void | 显示后动画过渡的回调函数 |
| onEntering | () => void | 显示中动画过渡的回调函数 |
| onExit | () => void | 退出前动画过渡的回调函数 |
| onExited | () => void | 退出后动画过渡的回调函数 |
| onExiting | () => void | 退出中动画过渡的回调函数 |
| onOpen | () => void | 显示时的回调函数 |
| open * | boolean | 显示 Drawer |
| placement | Placement(right) |
设置 Drawer 显示的位置 |
| size | 'xs' | 'sm' | 'md' | lg' | 'full' | number | string | 设置 Drawer 尺寸 |
<Drawer.Header>
| 属性名称 | 类型 (默认值 ) |
描述 |
|---|---|---|
| as | ElementType ('div') |
以对 Header 使用自定义元素类型 |
| classPrefix | string ('modal-header') |
组件 CSS 类的前缀 |
| closeButton | boolean (true) |
当设置为 true, 显示关闭按钮 |
| onClose | (event) => void | 点击关闭按钮的回调函数 |
| children | ReactNode | Header 的内容 |
<Drawer.Title>
| 属性名称 | 类型 (默认值) |
描述 |
|---|---|---|
| as | ElementType ('div') |
以对 Title 使用自定义元素类型 |
| classPrefix | string ('modal-title') |
组件 CSS 类的前缀 |
| children | ReactNode | Title 的内容 |
<Drawer.Actions>
| 属性名称 | 类型 (默认值) |
描述 |
|---|---|---|
| as | ElementType ('div') |
以对 Actions 使用自定义元素类型 |
| classPrefix | string ('modal-actions') |
组件 CSS 类的前缀 |
| children | ReactNode | Actions 的内容 |
<Drawer.Body>
| 属性名称 | 类型 (默认值) |
描述 |
|---|---|---|
| as | ElementType ('div') |
以对 Body 使用自定义元素类型 |
| classPrefix | string ('modal-body') |
组件 CSS 类的前缀 |
| children | ReactNode | Body 的内容 |
Placement
type Placement = 'top' | 'bottom' | 'right' | 'left';