跳至正文
uiify

Drawer

从屏幕边缘滑入的面板。

浏览器
Chrome 123+Firefox 121+Safari 17.5+
层级
0
压缩后大小
4.01 kB
强制布局预算
0 ms
axe 预算
0
支持 SSR
是
基于
elements/dialog
公开契约
测试环境

交互示例

Drawer

关闭

设置

调整工作区的偏好设置。

在较小屏幕上,此面板变为底部面板。从手柄处向下滑动、点击遮罩或使用“关闭”即可关闭。

吸附点

动态

拖动手柄以展开或关闭底部面板。

最近动态显示在这里。

宽度

SM抽屉

原生对话框控件在水合前即可使用。

在手机上,它会变为底部面板。

MD抽屉

原生对话框控件在水合前即可使用。

在手机上,它会变为底部面板。

LG抽屉

原生对话框控件在水合前即可使用。

在手机上,它会变为底部面板。

FULL抽屉

原生对话框控件在水合前即可使用。

在手机上,它会变为底部面板。

方向

工作区设置

调整工作区偏好设置。

工作区设置

调整工作区偏好设置。

工作区设置

调整工作区偏好设置。

工作区设置

调整工作区偏好设置。

API

DrawerPanel

属性类型默认值说明
size"sm" | "md" | "lg" | "full""md"桌面宽度:24rem、32rem、40rem或可用宽度。在移动端,所有尺寸都变为纵向底部面板。
dismiss"any" | "closerequest" | "none""any"原生关闭策略。Any允许点击遮罩、Escape和移动端向下滑动;none要求显式关闭控件。
backdrop"opaque" | "transparent""opaque"遮罩外观;不改变模态语义。
id*string—触发器和关闭按钮指向的唯一对话框id,让抽屉在水合前即可打开和关闭。
trigger*ReactNode—打开抽屉的按钮内容。
title*ReactNode—在抽屉内渲染的标题,用作无障碍名称。
descriptionReactNode—在标题下方渲染的辅助文本,由aria-describedby引用。
childrenReactNode—位于描述和关闭按钮之间的主体内容。
side"top" | "right" | "bottom" | "left""bottom"抽屉从哪条边缘滑入。
closeLabelstring"Close"圆形关闭图标的无障碍标签。
classNamestring—应用于dialog元素的类名。

Drawer.Root (client)

属性类型默认值说明
openboolean—受控打开状态。
defaultOpenboolean—非受控的初始打开状态。
onOpenChangeDialogChangeHandler—使用下一个打开状态及变更原因详情调用。
side"top" | "right" | "bottom" | "left""bottom"抽屉从哪条边缘滑入,同时决定拖动轴。
modalbooleantrue通过showModal()打开,使页面其余部分在遮罩后处于inert状态。
dismissiblebooleantrue允许拖过最后一个吸附点来关闭抽屉。
snapPointsreadonly number[]—拖动后面板停靠的位置,以抽屉尺寸的比例表示。
activeSnapPointnumber—受控吸附点,为snapPoints中的一个值。
defaultActiveSnapPointnumber—非受控的初始吸附点。
onSnapChange(snap: number) => void—使用抽屉最终停靠的吸附点调用。
childrenReactNode—Trigger、Content和内部组成部分。

Drawer.Trigger (client)

属性类型默认值说明
classNamestring—应用于触发器按钮的类名。
onClick(event: MouseEvent<HTMLButtonElement>) => void—点击触发器后、抽屉打开前调用。
refRef<HTMLButtonElement>—触发器按钮的ref,抽屉关闭时会重新聚焦该按钮。
childrenReactNode—触发器按钮的内容。

Drawer.Content (client)

属性类型默认值说明
classNamestring—应用于dialog元素的类名。
styleCSSProperties—与抽屉应用的拖动transform合并的内联style。
onCancelReactEventHandler<HTMLDialogElement>—原生dialog cancel事件发生时调用,例如按下Escape。
onCloseReactEventHandler<HTMLDialogElement>—原生dialog close事件发生时调用。
refRef<HTMLDialogElement>—dialog元素的ref。
childrenReactNode—抽屉内容。

Drawer.Title (client)

属性类型默认值说明
classNamestring—应用于标题元素的类名。
childrenReactNode—标题内容,成为抽屉的无障碍名称。

Drawer.Description (client)

属性类型默认值说明
classNamestring—应用于描述元素的类名。
childrenReactNode—描述内容,由aria-describedby引用。

Drawer.Close (client)

属性类型默认值说明
classNamestring—应用于关闭按钮的类名。
onClick(event: MouseEvent<HTMLButtonElement>) => void—点击关闭按钮后、抽屉关闭前调用。
childrenReactNode—关闭按钮的内容。

Drawer.Handle (client)

属性类型默认值说明
classNamestring—应用于拖动手柄的类名。
onPointerDown(event: PointerEvent<HTMLDivElement>) => void—在手柄上开始拖动时调用。
onPointerMove(event: PointerEvent<HTMLDivElement>) => void—拖动期间指针移动时调用。
onPointerUp(event: PointerEvent<HTMLDivElement>) => void—拖动结束且抽屉停靠到吸附点时调用。
onPointerCancel(event: PointerEvent<HTMLDivElement>) => void—浏览器取消拖动时调用。

键盘

按键操作
Enter / Space通过触发器打开对话框,或激活Close
Escape请求关闭,除非dismiss为none
Tab / Shift+Tab在模态对话框内移动

无障碍

DrawerPanel使用带目标id的对话框,因此打开、关闭、焦点限制和焦点返回在水合前就能工作;dismiss控制遮罩和Escape行为。面板有sm、md、lg和full宽度,在手机上变为底部面板。滑动从手柄或页头开始,因此主体仍可滚动。客户端API添加受控状态和吸附点。

样式钩子

data-uiify-drawerdata-partdata-sidedata-sizedata-backdropdata-statedata-dragging--uiify-drawer-inline-size--uiify-drawer-transform--uiify-sheet-offset
本页由机器翻译,尚未经人工审核。