Popover 气泡提示
示例
风格
可供选用的 ui
属性值:s
/ m
。
请选择
<template>
<article>
<section>
<veui-select
v-model="ui"
class="select"
:options="options"
/>
<veui-button @click="reset">
reset
</veui-button>
</section>
<section>
<span ref="text">Move your mouse pointer over here.</span>
<veui-popover
:ui="ui"
target="text"
>
This is a popover.
</veui-popover>
</section>
</article>
</template>
<script>
import { Popover, Select, Button } from 'veui'
export default {
components: {
'veui-select': Select,
'veui-button': Button,
'veui-popover': Popover
},
data () {
return {
ui: null,
options: [
{
label: 's',
value: 's'
},
{
label: 'm',
value: 'm'
}
]
}
},
methods: {
reset () {
this.ui = null
}
}
}
</script>
<style lang="less" scoped>
section + section {
margin-top: 20px;
}
.select {
max-width: 120px;
margin-right: 10px;
}
</style>
定位
使用 position
属性来指定气泡显示的位置。
使用 aim-center
属性来设置浮层提示箭头始终对准目标元素中心,适合用于目标元素较小的场景。
<template>
<article>
<section>
<veui-checkbox
v-model="aimCenter"
ui="s"
>
Aim center
</veui-checkbox>
</section>
<section class="grid">
<veui-popover
:open.sync="open"
:target="target"
:position="position"
:aim-center="aimCenter"
>
Hello.
</veui-popover>
<veui-button
ref="top-start"
style="grid-area: 1 / 2"
@mouseenter="show('top-start')"
>
top-start
</veui-button>
<veui-button
ref="top"
style="grid-area: 1 / 3"
@mouseenter="show('top')"
>
top
</veui-button>
<veui-button
ref="top-end"
style="grid-area: 1 / 4"
@mouseenter="show('top-end')"
>
top-end
</veui-button>
<veui-button
ref="right-start"
style="grid-area: 2 / 5"
@mouseenter="show('right-start')"
>
right-start
</veui-button>
<veui-button
ref="right"
style="grid-area: 3 / 5"
@mouseenter="show('right')"
>
right
</veui-button>
<veui-button
ref="right-end"
style="grid-area: 4 / 5"
@mouseenter="show('right-end')"
>
right-end
</veui-button>
<veui-button
ref="bottom-start"
style="grid-area: 5 / 2"
@mouseenter="show('bottom-start')"
>
bottom-start
</veui-button>
<veui-button
ref="bottom"
style="grid-area: 5 / 3"
@mouseenter="show('bottom')"
>
bottom
</veui-button>
<veui-button
ref="bottom-end"
style="grid-area: 5 / 4"
@mouseenter="show('bottom-end')"
>
bottom-end
</veui-button>
<veui-button
ref="left-start"
style="grid-area: 2 / 1"
@mouseenter="show('left-start')"
>
left-start
</veui-button>
<veui-button
ref="left"
style="grid-area: 3 / 1"
@mouseenter="show('left')"
>
left
</veui-button>
<veui-button
ref="left-end"
style="grid-area: 4 / 1"
@mouseenter="show('left-end')"
>
left-end
</veui-button>
</section>
</article>
</template>
<script>
import { Popover, Button, Checkbox } from 'veui'
export default {
components: {
'veui-popover': Popover,
'veui-button': Button,
'veui-checkbox': Checkbox
},
data () {
return {
target: null,
position: null,
open: false,
aimCenter: false
}
},
methods: {
show (position) {
this.target = this.$refs[position]
this.position = position
this.open = true
}
}
}
</script>
<style lang="less" scoped>
section + section {
margin-top: 20px;
}
.grid {
display: grid;
grid-template-columns: auto auto auto auto auto;
grid-gap: 12px;
justify-content: center;
align-items: center;
}
</style>
触发时机
使用 trigger
属性来指定显示/隐藏气泡的时机。
trigger="hover"
hover
hover
hover
over here.<template>
<article>
<section>
<code>trigger="{{ trigger }}"</code>
</section>
<section>
Open trigger: <veui-select
v-model="open"
:options="triggers"
/>
</section>
<section>
Close trigger: <veui-select
v-model="close"
:options="triggers"
/>
</section>
<section>
<span
ref="text"
tabindex="0"
>Trigger <b><code>{{ open }}</code></b> over here.</span>
<veui-popover
target="text"
:trigger="trigger"
>
This is a popover.
</veui-popover>
</section>
</article>
</template>
<script>
import { Popover, Select } from 'veui'
export default {
components: {
'veui-popover': Popover,
'veui-select': Select
},
data () {
return {
open: 'hover',
close: 'hover',
triggers: [
{ label: 'hover', value: 'hover' },
{ label: 'click', value: 'click' },
{ label: 'mousedown', value: 'mousedown' },
{ label: 'mouseup', value: 'mouseup' },
{ label: 'focus', value: 'focus' }
]
}
},
computed: {
trigger () {
if (this.open === this.close) {
return this.open
}
return `${this.open}-${this.close}`
}
}
}
</script>
<style lang="less" scoped>
section + section {
margin-top: 20px;
}
span {
outline: none;
&.focus-visible {
outline: 2px solid #ccc;
outline-offset: 3px;
}
}
</style>
标题和操作
使用 foot
属性开启底部操作区,使用 ok-label
属性和 cancel-label
属性来设置气泡的按钮内容。使用 foot
插槽来自定义底部操作区。
<template>
<article>
<section>
<veui-button
ref="btn1"
class="button"
>
按钮1
</veui-button>
<veui-button
ref="btn2"
class="button"
>
按钮2
</veui-button>
<veui-popover
target="btn1"
title="Popover Title"
ok-label="好"
cancel-label="否"
foot
>
This is a popover.
</veui-popover>
<veui-popover
target="btn2"
title="Popover Title"
foot
>
This is a popover.
<template #foot>
Popover foot
</template>
</veui-popover>
</section>
</article>
</template>
<script>
import { Popover, Button } from 'veui'
export default {
components: {
'veui-button': Button,
'veui-popover': Popover
}
}
</script>
<style lang="less" scoped>
.button + .button {
margin-left: 200px;
}
</style>
API
属性
名称 | 类型 | 默认值 | 描述 | ||||||
---|---|---|---|---|---|---|---|---|---|
ui | string | - | 预设样式。
| ||||||
open | boolean | false |
是否显示气泡提示。 | ||||||
target | string | Vue | Node | - | 参考 Overlay 组件的 target 属性。 | ||||||
position | string | 'top' | 指定定位参数。使用 Popper.js 风格的定位语法指定,可参考 | ||||||
trigger | string | 'hover' | 触发气泡提示的方式。支持指定的值为 例如: | ||||||
hide-delay | number | tooltip.hideDelays | 触发关闭条件满足后延迟关闭等待时间的毫秒数。可以用来防止光标移出 target 后移入气泡进行交互前已经自动关闭。 | ||||||
overlay-class | string | Array | Object | - | 参考 Overlay 组件的 overlay-class 属性。 | ||||||
overlay-style | string | Array | Object | - | 参考 Overlay 组件的 overlay-style 属性。 | ||||||
title | string | - | 用于自定义标题内容。 | ||||||
foot | boolean | false | 用于开启底部操作区。 | ||||||
ok-label | string | - | “确定”按钮的文字内容。 | ||||||
cancel-label | string | - | “取消”按钮的文字内容。 |
插槽
名称 | 描述 |
---|---|
default | 气泡提示内容。 |
title | 用于自定义标题内容。 |
foot | 用于自定义底部操作区。 |
事件
名称 | 描述 |
---|---|
ok | 点击“确定”按钮时触发。 |
cancel | 点击“取消”按钮时触发。 |