点击或在元素上悬停鼠标,弹出气泡卡片浮层。
import { createApp } from 'vue';
// vue
import { Popover } from '@nutui/nutui';
// taro
import { Popover } from '@nutui/nutui-taro';
const app = createApp();
app.use(Popover);
Popover 支持明朗和暗黑两种风格,默认为明朗风格,将 theme 属性设置为 dark 可切换为暗黑风格。
<nut-popover
:visible="visible"
:list="List"
@open="open"
@close="close"
>
<template #reference>
<nut-button type="primary" shape="square">明朗风格</nut-button>
</template>
</nut-popover>
<nut-popover
:visible="visible"
theme="dark"
:list="List"
@open="open"
@close="close"
>
<template #reference>
<nut-button type="primary" shape="square">暗黑风格</nut-button>
</template>
</nut-popover>
setup(){
const visible = ref(false);
const List = [
{name: '选项一'},
{name: '选项二'},
{name: '选项三'}];
}
const open = () =>{
visible.value = true;
}
const close = () =>{
visible.value = false;
}
<nut-popover
:visible="visible"
theme="dark"
:list="List"
@open="open"
@close="close"
>
<template #reference>
<nut-button type="primary" shape="square">展示图标</nut-button>
</template>
</nut-popover>
setup(){
const visible = ref(false);
const List = [
{name: '选项一',icon: 'my2'},
{name: '选项二',icon: 'cart2'},
{name: '选项三',icon: 'location2'}
],
const open = () =>{
visible.value = true;
}
const close = () =>{
visible.value = false;
}
}
在 list 数组中,可以通过 disabled 字段来禁用某个选项。
<nut-popover
:visible="visible"
:list="List"
@open="open"
@close="close"
>
<template #reference>
<nut-button type="primary" shape="square">禁用选项</nut-button>
</template>
</nut-popover>
setup(){
const visible = ref(false);
const List = [{
name: '选项一',
disabled: true
},
{
name: '选项二',
disabled: true
},
{
name: '选项三'
}],
const open = () =>{
visible.value = true;
}
const close = () =>{
visible.value = false;
}
}
在名为 content 插槽中自定义内容。
<nut-popover
:visible="visible"
@open="open"
@close="close">
<template #reference>
<nut-button type="primary" shape="square">自定义内容</nut-button>
</template>
<template #content>
<div class="self-content">
<div
class="self-content-item"
v-for="(item, index) in selfContent"
:key="index"
>
<nut-icon :name="item.name" size="15"></nut-icon>
<div class="self-content-desc">{{ item.desc }}</div>
</div>
</div>
</template>
</nut-popover>
支持 bottom, top, left, right 四种弹出位置,默认值为 bottom。
<nut-popover
:visible="visible"
location="top"
theme="dark"
:list="List"
@open="open"
@close="close"
>
<template #reference>
<nut-button type="primary" shape="square">向上弹出</nut-button>
</template>
</nut-popover>
| 字段 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| list | 选项列表 | List[] | [] |
| visible | 是否展示气泡弹出层 | boolean | false |
| theme | 主题风格,可选值为 dark | string | light |
| location | 弹出位置,可选值为 top,left,right | string | bottom |
List 属性是一个由对象构成的数组,数组中的每个对象配置一列,对象可以包含以下值:
| 键名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| name | 选项文字 | string | - |
| icon | nut-icon 图标名称 | string | - |
| disabled | 是否为禁用状态 | boolean | false |
| 名称 | 说明 |
|---|---|
| content | 自定义气泡组件菜单内容 |
| reference | 触发 Popover 显示的元素内容 |
| 名称 | 说明 |
|---|---|
| choose | 点击选项时触发 |
| open | 打开菜单时触发 |
| close | 关闭菜单时触发 |