Drawer 抽屉

有些时候,Dialog 组件并不满足我们的需求,比如说,你需要一个超大的表单,又或者你需要一个类似“条款”的展示区域,Drawer 拥有和 Dialog 几乎相同的 API,在提供便利的同时,带来截然不同的用户体验。

提示

由于 v-model 在所有组件上原生支持,visible.sync 已被弃用,请使用 v-model="visibilityBinding" 来控制当前抽屉的可见性。

基础用法

从不同方向呼出一个临时的抽屉。

Dialog 组件一样,Drawer 也需要一个 boolean 类型的 model-value 用于控制抽屉的显示/隐藏。Drawer 分为三个部分:titlebodyfootertitle 可以通过具名 slot 传入,也可以通过 title 属性传入,默认为空。Drawer 的主要区域是 body,一个默认的 slot。默认情况下,Drawer右往左打开,占据浏览器窗口 30% 的空间,当然,这个默认行为是可以通过 directionsize 属性覆盖的。这个示例也展示了如何使用 before-close API,更多细节请查看 Attributes 章节。

不带标题

当您不再需要标题时,可以将其从抽屉中删除。

withHeader 属性设置为 false,您可以从抽屉中移除标题,这样您的抽屉在屏幕上可以有更多的空间。如果您想要保证可访问性,请确保设置了 title 属性。

自定义内容

Dialog 一样,Drawer 也可以用来显示多种多样的交互内容。

自定义页眉

header 插槽可用于自定义显示标题的区域。为了保持可访问性,除了使用此插槽外,还请使用 title 属性,或使用 titleId 插槽属性来指定哪个元素应被读作抽屉标题。

可拖拽的抽屉 2.11.0

尝试拖动边缘部分。

设置 resizabletrue 来实现调整大小的功能。

嵌套抽屉

您也可以像 Dialog 一样拥有多层 Drawer

如果您需要在不同层级显示多个抽屉,您必须将 append-to-body 属性设置为 true

提示

抽屉内部的内容应该是懒渲染的,这意味着抽屉内部的内容不会影响初始渲染性能,因此任何 DOM 操作都应该通过 ref 或在 open 事件触发后执行。

提示

Drawer 提供了一个名为 destroyOnClose 的 API,这是一个标志变量,表示抽屉关闭后是否销毁其中的子内容。当您需要每次抽屉打开时都调用 mounted 生命周期时,可以使用此 API。

API

属性

名称描述类型默认值
model-value / v-model是否显示 Drawerbooleanfalse
append-to-body控制抽屉是否应插入到 DocumentBody 元素中,嵌套的抽屉必须将此参数设为 truebooleanfalse
append-to 2.8.0抽屉附加到的元素。将覆盖 append-to-bodyCSSSelector / HTMLElementbody
lock-scroll当 Drawer 显示时是否禁用 body 的滚动booleantrue
before-close如果设置,关闭过程将被暂停Function
close-on-click-modal抽屉是否可以通过点击遮罩来关闭booleantrue
close-on-press-escape表示抽屉是否可以通过按 ESC 关闭booleantrue
open-delay打开前的延迟时间(毫秒)number0
close-delay关闭前的延迟时间(毫秒)number0
destroy-on-close表示在抽屉关闭后是否销毁子元素booleanfalse
modal是否应显示阴影层booleantrue
direction抽屉的打开方向枚举rtl
resizable 2.11.0为抽屉启用可调整大小的功能booleanfalse
show-close是否应在抽屉右上角显示关闭按钮booleantrue
size抽屉的大小,如果抽屉是水平模式,它影响宽度属性,否则影响高度属性,当 size 是 number 类型时,它以像素为单位描述大小;当 size 是 string 类型时,应该使用 x% 表示法,否则它将被解释为像素单位number / string30%
title抽屉的标题,也可以通过具名插槽设置,详细描述可以在插槽表单中找到string
with-header控制头部区域是否存在的标志,默认为 true,当 withHeader 设置为 false 时,title 属性title 插槽都将不工作booleantrue
modal-class阴影层的额外类名string
header-class 2.9.3头部包装器的自定义类名string
body-class 2.9.3主体包装器的自定义类名string
footer-class 2.9.3底部包装器的自定义类名string
z-index设置 z-indexnumber
header-aria-level a11y头部的 aria-level 属性string2
custom-class 已弃用抽屉的额外类名string

警告

custom-class 已被弃用,并将 2.3.0 版本中移除,请使用 class

事件

名称描述类型
打开在抽屉打开动画开始前触发Function
opened在抽屉打开动画结束后触发Function
关闭在抽屉关闭动画开始前触发Function
closed在抽屉关闭动画结束后触发Function
open-auto-focus在抽屉打开且内容聚焦后触发Function
close-auto-focus在抽屉关闭且内容聚焦后触发Function

插槽

名称描述
default抽屉的内容
header抽屉头部区域;替换此插槽将移除标题,但不会移除关闭按钮。
footer抽屉底部区域
title 已弃用与 header 插槽作用相同。请改用 header 插槽。

暴露

名称描述
handleClose为了关闭抽屉,此方法将调用 before-close

来源

组件样式文档

贡献者