Popover 悬浮框
基础用法
Popover 是在 WTooltip 基础上开发出来的。 因此对于重复属性,请参考 Tooltip 的文档,在此文档中不做详尽解释。
trigger 属性被用来决定 popover 的触发方式,支持的触发方式: hover、click、focus 或 contextmenu。 如果你想手动控制它,设置 :visible 即可,不必再设置 trigger(受控模式下 trigger 无效)。
Manual 激活
通过 :visible 手动控制 Popover 的显示,不必设置 trigger。内容区可以放置操作按钮,点击后弹出 MessageBox 二次确认框。
使用 :visible 受控显示,无需 trigger。
虚拟触发
像 Tooltip 一样,Popover 可以由虚拟元素触发,这个功能就很适合使用在触发元素和展示内容元素是分开的场景。通常我们使用 #reference 来放置我们的触发元素, 用 triggering-element API,您可以任意设置您的触发元素 但注意到触发元素应该是接受 mouse 和 keyboard 事件的元素。
WARNING
v-popover 将被废弃,请使用 virtual-ref 作为替代。
内容可扩展
可以在 Popover 中嵌套其它组件, 以下为嵌套表格的例子。
利用插槽取代 content 属性
嵌套操作
当然,你还可以嵌套操作, 它比使用 dialog 更加轻量。
嵌套浮层组件
Popover 内嵌日期、Select、Cascader 等浮层组件时,需设置 :teleported="false",避免点击面板时被当成外部点击而关闭 Popover。
指令
您可以使用指令性方式弹出窗口,但这种方法不再推荐 ,因为这使得应用程序变得复杂, 您可以参考虚拟触发来实现一样的效果。
自定义浮层样式(scoped :deep())
浮层挂载在 body 下,scoped 样式原本够不着。本库已把祖先组件的 scoped 标识透传到浮层根,:deep() 即可覆盖浮层内部样式,并按作用域隔离——相同写法在不同组件互不影响。
A、B 两个作用域各染各色、互不影响;全局样式照常生效。
<w-popover popper-class="test" title="标题">
<template #reference>
<w-button>Hover</w-button>
</template>
</w-popover>
<style scoped>
/* 前缀写在 :deep() 外 */
.test :deep(.w3-popover__title) {
color: #0052d9;
}
</style>- scoped 直写(不带
:deep())命不中浮层内部元素。 - 前缀写在
:deep()外:.test :deep(...)✅;:deep(.test ...)❌。 - 非 scoped 全局样式照常命中,但易污染;其中
:deep()无效。 - 浮层根(
.w3-popper)自身用popper-style/popper-class覆盖。
无障碍标记 aria-label
浮层根节点 [role=tooltip] 的 aria-label 取值:用户显式传入的 aria-label 优先于 title;只配置 title 时用 title;两者都没有则不输出。触发区元素不会被写入该属性,组件也不从 content 推导标记值。
<w-popover title="提示" aria-label="患者提示" content="内容">
<template #reference>
<w-button>查看</w-button>
</template>
</w-popover>API
Attributes
| 属性名 | 说明 | 类型 | Default |
|---|---|---|---|
| trigger | 触发方式。仅传 :visible 的受控模式下无效,不必设置 | enum | hover |
| title | 标题 | string | — |
| aria-label a11y | 浮层根节点的 aria-label;优先于 title,都未配置时不输出 | string | — |
| effect | Tooltip 主题,WinDesign Next 内置了 dark / light 两种主题 | enum / string | light |
| content | 显示的内容,也可以通过写入默认 slot 修改显示内容 | string | '' |
| width | 宽度 | string / number | 150 |
| placement | 出现位置 | enum | bottom |
| disabled | Popover 是否可用 | boolean | false |
| visible / v-model:visible | Popover 是否显示。传入 boolean 即受控:仅 :visible 时不必设 trigger;v-model:visible 会回写内部关闭 | boolean / null | null |
| offset | 浮层偏移量, Popover 是在 Tooltip,基础上开发的, Popover的 offset 是 undefined, 但Tooltip 的 offset 是 12 | number | undefined |
| transition | 定义渐变动画,默认是 w3-fade-in-linear | string | — |
| show-arrow | 是否显示 Tooltip 箭头, 欲了解更多信息,请参考 WPopper | boolean | true |
| popper-options | popper.js 的参数 | object | {modifiers: [{name: 'computeStyles',options: {gpuAcceleration: false}}]} |
| popper-class | 为 popper 添加类名 | string | — |
| popper-style | 为 popper 自定义样式 | string / object | — |
| show-after | 在触发后多久显示内容,单位毫秒 | number | 0 |
| hide-after | 延迟关闭,单位毫秒 | number | 200 |
| auto-close | tooltip 出现后自动隐藏延时,单位毫秒 | number | 0 |
| tabindex | Popover 组件的 tabindex | number / string | 0 |
| teleported | 是否将 popover 的下拉列表插入至 body 元素 | boolean | true |
| persistent | 当 popover 组件长时间不触发且 persistent 属性设置为 false 时, popover 将会被删除 | boolean | true |
Slots
| 插槽名 | 说明 |
|---|---|
| default | Popover 内嵌 HTML 文本 |
| reference | 触发 Popover 显示的 HTML 元素 |
Events
| 事件名 | 说明 | Type |
|---|---|---|
| show | 显示时触发 | Function |
| before-enter | 显示动画播放前触发 | Function |
| after-enter | 显示动画播放完毕后触发 | Function |
| hide | 隐藏时触发 | Function |
| before-leave | 隐藏动画播放前触发 | Function |
| after-leave | 隐藏动画播放完毕后触发 | Function |
Exposes
| 名称 | 详情 | 类型 |
|---|---|---|
| hide | 隐藏 popover | Function |
Copyright 2025 Winning Health 版权所有

