Popover 气泡卡片

点击/鼠标移入元素,弹出气泡式的卡片浮层。

何时使用

  • 当目标元素有进一步的描述和相关操作时,可以收纳到卡片中,根据用户的操作行为进行展现。
  • Tooltip 的区别是,用户可以对浮层上的元素进行操作,因此它可以承载更复杂的内容,比如链接或按钮等。

代码演示

基本

最简单的用法,浮层的大小由内容区域决定。

  1. <v-popover title="Title">
  2. <v-button type="primary">Hover me</v-button>
  3. <div slot="content">
  4. <p>Content</P>
  5. <p>Content</P>
  6. </div>
  7. </v-popover>

三种触发方式

鼠标移入、聚集、点击。

  1. <v-popover title="Title" trigger="hover">
  2. <v-button>Hover me</v-button>
  3. <div slot="content">
  4. <p>Content</P>
  5. <p>Content</P>
  6. </div>
  7. </v-popover>
  8. <v-popover title="Title" trigger="focus">
  9. <v-button>Focus me</v-button>
  10. <div slot="content">
  11. <p>Content</P>
  12. <p>Content</P
  13. </div>
  14. </v-popover>
  15. <v-popover title="Title" trigger="click">
  16. <v-button>Click me</v-button>
  17. <div slot="content">
  18. <p>Content</P>
  19. <p>Content</P>
  20. </div>
  21. </v-popover>

保持显示

使用controlled保持显示。

  1. <template>
  2. <v-popover title="Title" trigger="hover" :controlled="controlled">
  3. <v-button>Hover me</v-button>
  4. <div slot="content">
  5. <p>Content</P>
  6. <p>Content</P>
  7. </div>
  8. </v-popover>
  9. <v-popover title="Title" trigger="focus" :controlled="controlled">
  10. <v-button>Focus me</v-button>
  11. <div slot="content">
  12. <p>Content</P>
  13. <p>Content</P
  14. </div>
  15. </v-popover>
  16. <v-popover title="Title" trigger="click" :controlled="controlled">
  17. <v-button>Click me</v-button>
  18. <div slot="content">
  19. <p>Content</P>
  20. <p>Content</P>
  21. </div>
  22. </v-popover>
  23. <v-button type="primary" @click="controlled = !controlled">设置controlled</v-button>
  24. </template>
  25. <script>
  26. export default {
  27. data: () => ({
  28. controlled: false
  29. })
  30. }
  31. </script>

位置

位置有十二个方向。

  1. <div id="components-popover-demo-placement">
  2. <div style="margin-left: 70px; white-space: nowrap;">
  3. <v-popover placement="topLeft" title="Title" trigger="click">
  4. <v-button>TL</v-button>
  5. <div slot="content">
  6. <p>Content</P>
  7. <p>Content</P>
  8. </div>
  9. </v-popover>
  10. <v-popover placement="top" title="Title" trigger="click">
  11. <v-button>Top</v-button>
  12. <div slot="content">
  13. <p>Content</P>
  14. <p>Content</P>
  15. </div>
  16. </v-popover>
  17. <v-popover placement="topRight" title="Title" trigger="click">
  18. <v-button>TR</v-button>
  19. <div slot="content">
  20. <p>Content</P>
  21. <p>Content</P>
  22. </div>
  23. </v-popover>
  24. </div>
  25. <div style="width: 70px; float: left;">
  26. <v-popover placement="leftTop" title="Title" trigger="click">
  27. <v-button>LT</v-button>
  28. <div slot="content">
  29. <p>Content</P>
  30. <p>Content</P>
  31. </div>
  32. </v-popover>
  33. <v-popover placement="left" title="Title" trigger="click">
  34. <v-button>L</v-button>
  35. <div slot="content">
  36. <p>Content</P>
  37. <p>Content</P>
  38. </div>
  39. </v-popover>
  40. <v-popover placement="leftBottom" title="Title" trigger="click">
  41. <v-button>LB</v-button>
  42. <div slot="content">
  43. <p>Content</P>
  44. <p>Content</P>
  45. </div>
  46. </v-popover>
  47. </div>
  48. <div style="width: 70px; margin-left: 304px;">
  49. <v-popover placement="rightTop" title="Title" trigger="click">
  50. <v-button>RT</v-button>
  51. <div slot="content">
  52. <p>Content</P>
  53. <p>Content</P>
  54. </div>
  55. </v-popover>
  56. <v-popover placement="right" title="Title" trigger="click">
  57. <v-button>R</v-button>
  58. <div slot="content">
  59. <p>Content</P>
  60. <p>Content</P>
  61. </div>
  62. </v-popover>
  63. <v-popover placement="rightBottom" title="Title" trigger="click">
  64. <v-button>RB</v-button>
  65. <div slot="content">
  66. <p>Content</P>
  67. <p>Content</P>
  68. </div>
  69. </v-popover>
  70. </div>
  71. <div style="margin-left: 70px; clear: both; white-space: nowrap;">
  72. <v-popover placement="bottomLeft" title="Title" trigger="click">
  73. <v-button>BL</v-button>
  74. <div slot="content">
  75. <p>Content</P>
  76. <p>Content</P>
  77. </div>
  78. </v-popover>
  79. <v-popover placement="bottom" title="Title" trigger="click">
  80. <v-button>B</v-button>
  81. <div slot="content">
  82. <p>Content</P>
  83. <p>Content</P>
  84. </div>
  85. </v-popover>
  86. <v-popover placement="bottomRight" title="Title" trigger="click">
  87. <v-button>BR</v-button>
  88. <div slot="content">
  89. <p>Content</P>
  90. <p>Content</P>
  91. </div>
  92. </v-popover>
  93. </div>
  94. </div>

从浮层内关闭

使用 visible 属性控制浮层显示。

  1. <template>
  2. <v-popover v-model="visible" title="Title" trigger="click">
  3. <v-button type="primary">Click me</v-button>
  4. <a slot="content" @click="visible = false">Close</a>
  5. </v-popover>
  6. </template>
  7. <script>
  8. export default {
  9. data: () => ({
  10. visible: false
  11. })
  12. }
  13. </script>

API

Popover Props

参数说明类型默认值
init-visible初始状态是否显示popoverBooleanfalse
title卡片标题String-
placement气泡框位置,可选 top left right bottom topLeft topRight bottomLeft bottomRight leftTop leftBottom rightTop rightBottomStringtop
trigger触发行为,可选 hover/focus/clickStringhover
overlay-style卡片样式String/Object-
controlled保持popover显示Booleanfalse
title:slot卡片标题,优先级高于title propSlot Node-
content:slot卡片内容Slot Node-

Popover Events

事件说明参数
changevisible发生变化时触发visible