1.0.2 • Published 1 month ago
@tanzhenxing/zx-popover v1.0.2
zx-popover 弹出框
弹出框是在元素旁边显示浮层,支持不同的触发方式和位置,常用于展示详细信息或操作菜单。
基础用法
弹出框组件基于 slot
插槽和 reference
插槽实现,通过 trigger
属性指定触发方式,支持 hover
、click
、focus
、contextmenu
和 manual
五种触发方式。
<zx-popover content="这是弹出框内容" title="标题" placement="top">
<template #reference>
<button>hover触发</button>
</template>
</zx-popover>
<zx-popover content="这是弹出框内容" title="标题" placement="bottom" trigger="click">
<template #reference>
<button>click触发</button>
</template>
</zx-popover>
弹出位置
通过 placement
属性控制弹出位置,支持12个不同方向:
top
、top-start
、top-end
bottom
、bottom-start
、bottom-end
left
、left-start
、left-end
right
、right-start
、right-end
<zx-popover content="top-start" placement="top-start">
<template #reference>
<button>top-start</button>
</template>
</zx-popover>
主题
通过 effect
属性控制主题,支持 light
和 dark
两种主题:
<zx-popover content="浅色主题" title="Light" effect="light">
<template #reference>
<button>浅色主题</button>
</template>
</zx-popover>
<zx-popover content="深色主题" title="Dark" effect="dark">
<template #reference>
<button>深色主题</button>
</template>
</zx-popover>
自定义内容
除了使用 content
属性设置简单文本内容外,还可以使用默认插槽自定义复杂内容:
<zx-popover placement="right" trigger="click" width="400">
<template #reference>
<button>自定义内容</button>
</template>
<view class="custom-content">
<view class="custom-title">自定义标题</view>
<view class="custom-body">
<view class="custom-item">
<text>可以自定义任意内容</text>
</view>
<view class="custom-footer">
<button @click="handleConfirm">确认</button>
<button @click="handleCancel">取消</button>
</view>
</view>
</view>
</zx-popover>
API
Props
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
show | 是否显示弹出框 | Boolean | false |
trigger | 触发方式 | String | hover |
title | 标题 | String | - |
content | 显示的内容 | String | - |
placement | 出现位置 | String | top |
showArrow | 是否显示箭头 | Boolean | true |
width | 宽度 | Number/String | 300 |
disabled | 是否禁用 | Boolean | false |
offset | 出现位置的偏移量 | Number/String | 0 |
zIndex | 层级 | Number/String | 10090 |
closeOnClickOutside | 点击外部是否关闭 | Boolean | true |
closeOnClickOverlay | 点击遮罩是否关闭 | Boolean | true |
showAfter | 延迟出现,单位毫秒 | Number/String | 0 |
hideAfter | 延迟消失,单位毫秒 | Number/String | 200 |
effect | 主题 | String | light |
overlay | 是否显示遮罩 | Boolean | false |
duration | 动画时长,单位ms | Number/String | 300 |
Events
事件名 | 说明 | 回调参数 |
---|---|---|
show | 显示时触发 | - |
hide | 隐藏时触发 | - |
beforeEnter | 显示动画播放前触发 | - |
afterEnter | 显示动画播放完毕后触发 | - |
beforeLeave | 隐藏动画播放前触发 | - |
afterLeave | 隐藏动画播放完毕后触发 | - |
Slots
插槽名 | 说明 |
---|---|
default | 弹出框内容 |
reference | 触发弹出框显示的元素 |
方法
通过ref调用实例方法:
方法名 | 说明 | 参数 |
---|---|---|
show | 显示弹出框 | - |
hide | 隐藏弹出框 | - |
<template>
<zx-popover ref="popoverRef">
<!-- 内容 -->
</zx-popover>
</template>
<script setup>
import { ref } from 'vue';
const popoverRef = ref(null);
function showPopover() {
popoverRef.value.show();
}
function hidePopover() {
popoverRef.value.hide();
}
</script>
1.0.2
1 month ago