对话框

通知用户,同时保留当前页面状态。

基本用法

Dialog 弹出一个对话框,而且可定制性很强。

使用 Boolean 设置 model-value / v-model 属性,当它是 true 时,对话框会显示。该对话框有两部分:bodyfooter,后者需要一个名为 footerslot。可选的 title 属性(默认为空)用于定义标题。最后,本示例演示了 before-close 的使用方法。

TIP

before-close 仅当用户单击关闭图标或背景时才起作用。如果您有在 footer 命名槽中关闭对话框的按钮,则可以在按钮的单击事件处理程序中添加对 before-close 执行的操作。

定制内容

Dialog 的内容可以是任何内容,甚至是表格或表单。此示例演示如何将 Element Plus Table 和 Form 与 Dialog 结合使用。

自定义标题

header 插槽可用于自定义显示标题的区域。为了保持可访问性,除了使用此槽之外,还可以使用 title 属性,或者使用 titleId 槽属性来指定应将哪个元素作为对话框标题读出。

嵌套对话框

如果一个对话框嵌套在另一个对话框中,则需要 append-to-body

通常我们不建议使用嵌套对话框。如果您需要在页面上呈现多个对话框,您可以简单地将它们展平,使它们彼此成为同级对话框。如果必须将一个Dialog嵌套在另一个Dialog中,请将嵌套Dialog的append-to-body设置为true,它将附加到body而不是其父节点,因此两个Dialog都可以正确渲染。

内容居中

对话框的内容可以居中。

center 设置为 true 将使对话框的页眉和页脚水平居中。 center 仅影响对话框的页眉和页脚。 Dialog 的主体可以是任何东西,因此有时居中时可能看起来不太好。如果您还希望将主体居中,则需要编写一些 CSS。

TIP

Dialog 的内容是延迟渲染的,这意味着默认槽在首次打开之前不会渲染到 DOM 上。因此,如果您需要执行 DOM 操作或使用 ref 访问组件,请在 open 事件回调中执行。

居中对齐对话框

从屏幕中央打开对话框。

align-center 设置为 true 将使对话框水平和垂直居中。属性 top 不会同时工作,因为对话框在 Flexbox 中垂直居中。

关闭时销毁

启用此功能后,默认插槽下的内容将被 v-if 指令销毁。当您有性能问题时启用此功能。

请注意,启用此功能后,在发送 transition.beforeEnter 之前不会渲染内容,只会有 overlay header(if any) footer(if any)

可拖动对话框

尝试拖动 header 部分。

draggable 设置为 true 进行拖动。设置 overflow 2.5.4true 可以拖动溢出视口。

TIP

当使用modal = false时,请确保append-to-body设置为true,因为Dialog是由position: relative定位的,当modal被删除时,Dialog将根据DOM中的当前位置定位自己,而不是Document.Body,这样样式就会乱了。

全屏

设置 fullscreen 属性以打开全屏对话框。

TIP

如果 fullscreen 为 true,则 width top draggable 属性不起作用。

模态

modal 设置为 false 将隐藏对话框的模态(覆盖)。

从版本2.10.5开始,增加modal-penetrable属性,可穿透。

自定义动画 2.10.5

通过 transition 属性自定义对话框动画,该属性接受:

  • ​转换名称​​(字符串)

  • ​​Vue过渡配置​​(对象)

示例包括缩放、滑动、淡入淡出、弹跳动画和带有自定义事件处理程序的基于对象的配置。

TIP

动画类是根据过渡名称动态生成的。为了对动画行为进行精细控制,您可以显式定义这些类。详情请参阅自定义转换类

活动

打开开发人员控制台(ctrl + shift + J),查看事件顺序。

API

属性

名称描述类型默认
模型值 / v 模型对话框的可见性布尔值
标题对话框的标题。也可以通过命名槽来传递(见下表)字符串''
宽度Dialog 的宽度,默认为 50%字符串 / 数字''
全屏Dialog是否占据全屏布尔值
顶部Dialog CSS 的 margin-top 的值,默认为 15vh字符串''
莫代尔是否显示遮罩布尔值真实
模态可穿透 2.10.5面罩是否具有穿透性。模态属性必须是 false布尔值
模态类掩码的自定义类名字符串
标头类 2.9.3标头包装器的自定义类名字符串
身体等级 2.9.3正文包装的自定义类名字符串
页脚类 2.9.3页脚包装的自定义类名字符串
附加到正文是否将 Dialog 本身附加到 body。嵌套对话框应将此属性设置为 true布尔值
追加到 2.4.3对话框附加到哪个元素。将覆盖 append-to-bodyCSS选择器 / HTMLElement身体
锁定滚动显示Dialog时是否禁用body滚动布尔值真实
打开延迟打开前的时间(毫秒)数字0
关闭延迟关闭前的时间(毫秒)数字0
点击关闭模式是否可以通过单击蒙版来关闭对话框布尔值真实
关闭新闻转义是否可以通过按 ESC关闭对话框布尔值真实
显示关闭是否显示关闭按钮布尔值真实
收盘前在Dialog关闭之前回调,它会阻止Dialog关闭,使用done关闭对话框功能
可拖动启用对话框的拖动功能布尔值
溢出 2.5.4可拖动对话框可以溢出视口布尔值
中心是否居中对齐页眉和页脚布尔值
居中对齐 2.2.16是否水平和垂直对齐对话框布尔值
关闭时销毁关闭时销毁对话框中的元素布尔值
关闭图标自定义关闭图标,默认为关闭字符串 / 组件
z 索引与原生 CSS 中的 z-index 相同,对话框的 z-order数字
标头 aria 级别 a11y标头的 aria-level 属性字符串2
过渡 2.10.5对话框动画的自定义转换配置。可以是字符串(过渡名称)或带有 Vue 过渡道具的对象字符串 / 对象对话框淡入淡出
自定义类 ^(已弃用)对话框的自定义类名字符串''

WARNING

custom-class弃用,并且2.4.0 中删除,请使用 class

老虎机

名称描述
默认对话框的默认内容
标题对话框标题的内容;替换它会删除标题,但不会删除关闭按钮。
页脚对话框页脚的内容
标题 ^(已弃用)与标头插槽的工作方式相同。用它来代替。

WARNING

title弃用,并且3.0.0 中删除,请使用 header

活动

名称描述类型
打开对话框打开时触发功能
打开Dialog 打开动画结束时触发功能
关闭对话框关闭时触发功能
关闭当对话框关闭动画结束时触发功能
打开自动对焦对话框打开且内容聚焦后触发功能
近距离自动对焦对话框关闭且内容聚焦后触发功能

暴露

名称描述类型
重置位置 2.8.1重置位置功能
处理关闭 2.9.8关闭对话框功能

常见问题解答

####在SFC中使用对话框,范围样式不生效

典型问题:#10515

PS:由于对话框是使用Teleport渲染的,所以根节点的样式建议全局写入。

####当对话框显示和隐藏时,存在页面元素来回移位的情况

典型问题:#10481

PS:建议将滚动区域放置在 vue 安装的节点内,例如<div id="app" />,本体使用overflow: hidden样式。