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 两个作用域各染各色、互不影响;全局样式照常生效。

vue
<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 推导标记值。

html
<w-popover title="提示" aria-label="患者提示" content="内容">
  <template #reference>
    <w-button>查看</w-button>
  </template>
</w-popover>

API ​

Attributes ​

属性名说明类型Default
trigger触发方式。仅传 :visible 的受控模式下无效,不必设置enumhover
title标题string—
aria-label a11y浮层根节点的 aria-label;优先于 title,都未配置时不输出string—
effectTooltip 主题,WinDesign Next 内置了 dark / light 两种主题enum / stringlight
content显示的内容,也可以通过写入默认 slot 修改显示内容string''
width宽度string / number150
placement出现位置enumbottom
disabledPopover 是否可用booleanfalse
visible / v-model:visiblePopover 是否显示。传入 boolean 即受控:仅 :visible 时不必设 trigger;v-model:visible 会回写内部关闭boolean / nullnull
offset浮层偏移量, Popover 是在 Tooltip,基础上开发的, Popover的 offset 是 undefined, 但Tooltip 的 offset 是 12numberundefined
transition定义渐变动画,默认是 w3-fade-in-linearstring—
show-arrow是否显示 Tooltip 箭头, 欲了解更多信息,请参考 WPopperbooleantrue
popper-optionspopper.js 的参数object{modifiers: [{name: 'computeStyles',options: {gpuAcceleration: false}}]}
popper-class为 popper 添加类名string—
popper-style为 popper 自定义样式string / object—
show-after在触发后多久显示内容,单位毫秒number0
hide-after延迟关闭,单位毫秒number200
auto-closetooltip 出现后自动隐藏延时,单位毫秒number0
tabindexPopover 组件的 tabindexnumber / string0
teleported是否将 popover 的下拉列表插入至 body 元素booleantrue
persistent当 popover 组件长时间不触发且 persistent 属性设置为 false 时, popover 将会被删除booleantrue

Slots ​

插槽名说明
defaultPopover 内嵌 HTML 文本
reference触发 Popover 显示的 HTML 元素

Events ​

事件名说明Type
show显示时触发Function
before-enter显示动画播放前触发Function
after-enter显示动画播放完毕后触发Function
hide隐藏时触发Function
before-leave隐藏动画播放前触发Function
after-leave隐藏动画播放完毕后触发Function

Exposes ​

名称详情类型
hide隐藏 popoverFunction

Copyright 2025 Winning Health 版权所有