Dialog 对话框
在保留当前页面状态的情况下,弹出一个模态对话框,告知用户信息或进行交互操作。
基础用法
通过 v-model 控制对话框的显示与隐藏。
尺寸预设
通过 size 属性快速设置对话框宽度,支持 small、medium、large、full 四种尺寸。
拖拽与全屏
通过 draggable 启用拖拽,fullscreen 显示全屏切换按钮。
关闭行为
通过 show-close、close-on-click-overlay、close-on-esc 控制关闭方式。
Dialog API
Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
modelValue | 对话框是否显示(v-model) | boolean | false |
title | 对话框标题 | string | — |
width | 对话框宽度(CSS 值或 px 数字) | string | number | — |
size | 尺寸预设 | small | medium | large | full | medium |
fullscreen | 是否显示全屏切换按钮 | boolean | false |
draggable | 是否可拖拽 | boolean | false |
show-close | 是否显示关闭按钮 | boolean | true |
center | 是否居中布局 | boolean | false |
close-on-click-overlay | 点击遮罩层是否关闭 | boolean | true |
close-on-esc | 按下 Escape 是否关闭 | boolean | true |
lock-scroll | 打开时是否锁定 body 滚动 | boolean | true |
overlay-class | 遮罩层自定义类名 | string | — |
dialog-class | 对话框自定义类名 | string | — |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
update:modelValue | 对话框显示状态变化时触发 | (visible: boolean) |
open | 对话框打开时触发 | — |
close | 对话框关闭时触发 | — |
closed | 对话框关闭动画完成后触发 | — |
Slots
| 插槽名 | 说明 |
|---|---|
default | 对话框主体内容 |
title | 自定义标题内容 |
footer | 对话框底部操作区 |
注意事项
- SSR 兼容性:Dialog 使用
Teleport将内容挂载到document.body,在 SSR 环境中需确保仅在客户端渲染。 - 滚动锁定:默认锁定 body 滚动(
lock-scroll: true),关闭后自动恢复。如需保留背景滚动,设置lock-scroll: false。 - z-index 管理:Dialog 使用全局 z-index 管理器自动递增,确保后打开的 Dialog 始终覆盖在先打开的之上。
- 拖拽限制:启用
draggable后仅可通过 header 区域拖拽。全屏模式下拖拽会被禁用。 - 无障碍:建议为 Dialog 添加语义化的
title属性,以便屏幕阅读器正确识别对话框标题。