Drawer 抽屉 ​

当 Dialog 不足以承载超大表单或长文案(如服务条款)时,可使用 Drawer。其 API 与 Dialog 接近,但交互形态为侧滑面板。

TIP

组件已原生支持 v-model,visible.sync 已废弃,请使用 v-model 绑定显隐。

基础用法 ​

从多个方向呼出临时抽屉。

与 Dialog 类似,通过布尔类型的 model-value 控制显示。抽屉包含 title、body、footer:title 可用属性或具名插槽,默认为空;body 为用户内容区。默认从右侧滑入,宽度约为视口 30%,可通过 direction、size 调整。本例演示 before-close 用法,详见属性表。

无标题 ​

不需要标题时可关闭标题区。

将 withHeader 设为 false 可去掉标题区以腾出空间。若需无障碍支持,请仍设置 title 属性。

自定义内容 ​

与 Dialog 相同,可承载丰富交互。

自定义头部 ​

使用 header 插槽自定义标题区域;请同时设置 title 属性,或使用插槽属性 titleId 指定朗读为标题的元素。

可调整宽度 ​

拖拽边缘调整尺寸。

使用布尔值启用或关闭调整尺寸;传入对象可进一步限制最小、最大尺寸(见 resizable)。

嵌套抽屉 ​

与 Dialog 类似支持多层。

多层抽屉请将内层 append-to-body 设为 true。

遮罩层 ​

modal 为 false 时不显示遮罩。

支持 modal-penetrable,允许事件穿透。

TIP

抽屉内内容建议懒渲染:未打开前不应影响首屏性能;DOM 操作请在 open 事件后或通过 ref 进行。

TIP

destroy-on-close 表示关闭后是否销毁内部子树;若希望每次打开都重新走子组件的 mounted,可开启该属性。

API ​

属性 ​

名称说明类型默认值
model-value / v-model是否显示booleanfalse
append-to-body是否插入到 document.body;嵌套抽屉必须为 truebooleanfalse
append-to挂载目标;会覆盖 append-to-bodyCSSSelector / HTMLElementbody
lock-scroll显示时是否锁定 body 滚动booleantrue
before-close若设置则拦截关闭;done 为函数,调用时传入 true 或不传参可取消关闭Function—
close-on-click-modal点击遮罩是否关闭booleantrue
close-on-press-escape按 ESC 是否关闭booleantrue
open-delay打开前延迟(毫秒)number0
close-delay关闭前延迟(毫秒)number0
destroy-on-close关闭后是否销毁内部内容booleanfalse
modal是否显示遮罩booleantrue
modal-penetrable遮罩是否可穿透;需将 modal 设为 falsebooleanfalse
direction打开方向enumrtl
resizable是否可调整尺寸;传入对象时可配置最小、最大尺寸(见 resizable)boolean / objectfalse
show-close是否显示右上角关闭按钮booleantrue
size抽屉尺寸:水平方向影响宽度,垂直方向影响高度。number 表示像素;string 若为 x% 则按百分比,否则按像素解析number / string30%
title标题;也可用具名插槽,详见插槽说明string—
with-header是否显示头部;为 false 时 title 属性与 title 插槽均不展示booleantrue
modal-class遮罩额外类名string—
header-class头部包裹层类名string—
body-class内容区包裹层类名string—
footer-class底部包裹层类名string—
z-index层级number—
header-aria-level a11y头部 aria-levelstring2

WARNING

custom-class 已废弃,请改用 class。

resizable ​

resizable 为对象时的配置项:

属性说明类型默认值
min-size抽屉最小尺寸(像素或百分比)number / string4px
max-size抽屉最大尺寸(像素或百分比)number / string100%

事件 ​

名称说明类型
open打开动画开始前Function
opened打开动画结束后Function
close关闭动画开始前Function
closed关闭动画结束后Function
open-auto-focus打开且内容聚焦后Function
close-auto-focus关闭且焦点处理后Function
resize-start开始调整尺寸(resizable 开启时)Function
resize调整尺寸过程中Function
resize-end结束调整尺寸Function

插槽 ​

名称说明
default主体内容
header头部;替换后不显示标题文案,关闭按钮仍保留
footer底部

WARNING

title 插槽已废弃。

暴露 ​

名称说明
handleClose关闭抽屉,内部会调用 before-close。