Skip to content

Drawer

基于 vaul-vue 的抽屉组件,支持从四个方向滑入,适合移动端下拉面板、侧边栏等场景。

Anatomy

  • Drawer抽屉根,承载 open/direction 等状态 (vaul-vue DrawerRoot 的别名)
    • DrawerTrigger触发器,点击打开抽屉
    • DrawerOverlay背景蒙层,点击可关闭
    • DrawerContent抽屉面板容器,已内置 Portal 与 Overlay
    • DrawerClose关闭按钮,可 as-child 包裹任意元素

TIP

DrawerContent 内部会自动渲染 DrawerPortalDrawerOverlay,所以通常不需要再手动写 DrawerOverlay;只有当你希望自定义 overlay 样式时才单独放置。

基本用法

从底部滑入

默认方向,适合移动端操作面板。

方向

direction="right"

从右侧滑入,常用于桌面端侧边栏。

direction="left"

direction="top"

API

Drawer Props

名称 类型 默认值 说明
openboolean受控开关状态
defaultOpenboolean非受控初始状态
direction'top' | 'bottom' | 'left' | 'right''bottom'抽屉滑入方向
modalbooleantrue是否锁定背景滚动
dismissiblebooleantrue是否允许通过蒙层 / 拖动手势关闭

其余 props 透传至 vaul-vue DrawerRoot

Drawer Events

事件 Payload 说明
update:open(open: boolean)开关状态变化

DrawerContent Props

名称 类型 默认值 说明
classstring面板额外 class;组件已按 direction 内置定位样式

其余 props 透传至 reka-ui DialogContentProps

Slots

插槽 作用域 说明
default (Drawer)通常包含 Trigger 与 Content
default (DrawerTrigger)触发元素;可用 as-child 包裹自定义按钮
default (DrawerContent)抽屉面板内容
default (DrawerClose)关闭按钮内容

可访问性

  • 基于 vaul-vue + reka-ui,自动管理焦点陷阱与键盘导航
  • Esc 关闭、拖动抽屉边缘可关闭(移动端)
  • modal=true(默认)会锁定 body 滚动并拦截背景交互

基于 MIT 协议发布(内部使用)