Skip to content

Drawer 抽屉 ​

有些时候,Dialog 组件并不满足我们的需求,比如你的表单很长,亦或是你需要临时展示一些文档,此时可以使用 Drawer。它拥有和 Dialog 几乎相同的 API,并在 UI 上带来不一样的体验。

ts
import { createApp } from 'vue'
import { ElDrawer } from '@szhn/dh-design-pc'

const app = createApp()
app.use(ElDrawer)

基础用法 ​

通过 v-model 控制 Drawer 的显示与隐藏。默认情况下 Drawer 从右侧打开,占据 35% 的浏览器宽度,并展示标准底部操作区,可通过 direction 和 size 修改。

不同方向 ​

通过 direction 属性设置 Drawer 的打开方向,支持 rtl / ltr / ttb / btt。

不添加 Title ​

将 with-header 设置为 false 可以移除头部标题,适合自定义顶部的场景。

自定义内容 ​

Drawer 内容区域可以放置任意内容,常用于展示表单、详情等。

底部操作区 ​

Drawer 默认展示标准底部操作区。右侧抽屉默认按钮靠左,顺序为“确认 / 取消”;其他方向默认按钮靠右,顺序为“取消 / 确认”。不需要底部时可将 show-footer 设为 false,需要特殊内容时可使用 footer 插槽覆盖默认按钮。

自定义头部 ​

使用 header 具名插槽可以完全接管头部,搭配 title 属性可保留可访问性。

可调整尺寸 ​

设置 resizable 为 true 后,用户可以拖拽抽屉边缘动态调整大小。

嵌套抽屉 ​

可以拥有多层嵌套的 Drawer,嵌套时需要对内部 Drawer 设置 append-to-body。

模态层 ​

将 modal 设为 false 可隐藏遮罩层;也可以配合 modal-penetrable 允许点击穿透。

API ​

属性 ​

属性名说明类型默认值
model-value / v-model是否显示 Drawerbooleanfalse
append-to-body是否插入至 body 元素booleanfalse
lock-scroll显示时锁定 body 滚动booleantrue
before-close关闭前回调Function—
close-on-click-modal点击遮罩关闭booleantrue
close-on-press-escapeESC 关闭booleantrue
destroy-on-close关闭后销毁子元素booleanfalse
modal是否需要遮罩层booleantrue
modal-penetrable遮罩是否允许穿透(需 modal=false)booleanfalse
direction打开方向rtl / ltr / ttb / bttrtl
show-footer是否展示底部操作区booleantrue
footer-align底部按钮位置enumauto
footer-order底部按钮顺序enumauto
confirm-text确认按钮文案string确认
cancel-text取消按钮文案string取消
resizable允许调整大小booleanfalse
show-close显示关闭按钮booleantrue
size尺寸number / string35%
title标题string—
with-header是否显示头部booleantrue

事件 ​

事件名说明
confirm点击默认确认按钮时触发
cancel点击默认取消按钮时触发
open / opened打开 / 打开动画结束
close / closed关闭 / 关闭动画结束

插槽 ​

名称说明
defaultDrawer 的内容
headerDrawer 头部
footerDrawer 页脚

更多配置参见 Element Plus Drawer。