Skip to content

Popup 弹出框

Popup 组件用于在页面中弹出一个浮层,可以包含任意内容,支持多种触发方式和位置控制。

参数

Props

名称类型默认值描述
visiblebooleanfalse是否显示弹窗
triggerTriggerType'click'触发方式
referenceElement | string | nullnull手动触发的 reference
placementPlacementType'bottom'弹出位置
offsetnumber8弹窗内容与触发元素的距离
showArrowbooleantrue是否显示箭头
transitionNameTransitionName | false'x-fade'过渡动画名称
showDelaynumber100移入延迟时间(ms)
hideDelaynumber100移出延迟时间(ms)
disabledbooleanfalse是否禁用
hideOnClickbooleantrue点击外部是否关闭
enterablebooleantrue是否可以移入弹窗
appendToAppendTo'body'挂载节点
escbooleantrue是否在按下 Esc 键时关闭
lockScrollbooleanfalse是否锁定滚动
autoFocusbooleantrue是否自动聚焦第一个可聚焦元素
restoreFocusbooleantrue关闭时是否恢复焦点
alignWidthbooleantrue是否对齐触发元素的宽度
popupClassXClass''弹出层样式类
popupStyleXStyle''弹出层样式

Slots

名称描述参数
default触发元素-
content弹出内容-

Events

名称描述参数
update:visible可见状态变化时触发(visible: boolean) => void
show显示前触发-
shownA显示后触发-
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;