Popup 弹出框
Popup 组件用于在页面中弹出一个浮层,可以包含任意内容,支持多种触发方式和位置控制。
参数
Props
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
visible | boolean | false | 是否显示弹窗 |
trigger | TriggerType | 'click' | 触发方式 |
reference | Element | string | null | null | 手动触发的 reference |
placement | PlacementType | 'bottom' | 弹出位置 |
offset | number | 8 | 弹窗内容与触发元素的距离 |
showArrow | boolean | true | 是否显示箭头 |
transitionName | TransitionName | false | 'x-fade' | 过渡动画名称 |
showDelay | number | 100 | 移入延迟时间(ms) |
hideDelay | number | 100 | 移出延迟时间(ms) |
disabled | boolean | false | 是否禁用 |
hideOnClick | boolean | true | 点击外部是否关闭 |
enterable | boolean | true | 是否可以移入弹窗 |
appendTo | AppendTo | 'body' | 挂载节点 |
esc | boolean | true | 是否在按下 Esc 键时关闭 |
lockScroll | boolean | false | 是否锁定滚动 |
autoFocus | boolean | true | 是否自动聚焦第一个可聚焦元素 |
restoreFocus | boolean | true | 关闭时是否恢复焦点 |
alignWidth | boolean | true | 是否对齐触发元素的宽度 |
popupClass | XClass | '' | 弹出层样式类 |
popupStyle | XStyle | '' | 弹出层样式 |
Slots
名称 | 描述 | 参数 |
---|---|---|
default | 触发元素 | - |
content | 弹出内容 | - |
Events
名称 | 描述 | 参数 |
---|---|---|
update:visible | 可见状态变化时触发 | (visible: boolean) => void |
show | 显示前触发 | - |
shown | A显示后触发 | - |
hide | 隐藏前触发 | - |
hidden | 隐藏后触发 | - |
click-outside | 点击外部时触发 | (event: MouseEvent) => void |
示例
基础用法
基础的弹出框用法。
不同触发方式
Popup 支持多种触发方式:点击、悬停、右键和手动。
挂载节点
可以指定弹出框挂载的位置。
不同位置
Popup 支持12个不同的弹出位置。
过渡动画
可以使用不同的过渡动画效果。
事件
Popup 提供了一系列事件来监听其状态变化。
TypeScript
ts
// 触发方式
export type TriggerType =
| "hover"
| "click"
| "focus"
| "contextmenu"
| "manual";
// 弹出位置
export type PlacementType =
| "top"
| "top-start"
| "top-end"
| "bottom"
| "bottom-start"
| "bottom-end"
| "left"
| "left-start"
| "left-end"
| "right"
| "right-start"
| "right-end";
// 动画名称
export type TransitionName =
| "x-fade"
| "x-zoom"
| "x-slide"
| "x-slide-up"
| "x-slide-down"
| "x-slide-left"
| "x-slide-right";
// 挂载节点类型
export type AppendTo = HTMLElement | "body" | null;