更新记录
1.0.0(2026-08-21) 下载此版本
1.0.0 (2026-08-21)
平台兼容性
uni-app(3.8.2)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | - | - | - | - | - | - | - | - | - |
SeaPopover
一款轻量、智能定位的弹出菜单组件,为 uni-app 应用提供优雅的 Popover 体验。
特性
- 🎯 自动智能定位 – 自动选择最佳弹出方向(上下左右及
-start/-end),避免溢出屏幕。 - 🎨 主题可配 – 支持浅色/深色主题,也可自定义背景色。
- ⌨️ 键盘支持 – 支持
Enter键切换和选择,提升可访问性。 - 🔧 高度可配置 – 可自定义间距、可见比例、动画时长等。
- 📱 全端兼容 – 支持 App、H5、各小程序平台。
- 🌐 对象选项支持 – 通过
value-key灵活比对对象数据。
快速开始
安装
1. 通过 uni-app 插件市场安装(推荐)
在 HBuilderX 中,点击 插件市场 → 搜索 sea-popover → 点击安装即可。
2. 手动下载
将插件文件夹 sea-popover 放入项目的 uni_modules 目录。
3. npm 安装(如果已发布到 npm)
npm install sea-popover
使用
在页面中引入组件(如果使用 uni_modules 自动注册则无需手动引入):
<template>
<view>
<SeaPopover
v-model="selectedValue"
:options="options"
value-key="id"
placement="auto"
theme="light"
@handleClick=""
>
<!-- 触发器插槽 -->
<button>点击我</button>
</SeaPopover>
</view>
</template>
<script>
export default {
data() {
return {
selectedValue: { id: 1, name: '选项一' },
options: [
{ id: 1, name: '选项一' },
{ id: 2, name: '选项二' },
{ id: 3, name: '选项三' },
],
};
},
methods: {
(show) {
console.log('Popover 打开状态:', show);
},
},
};
</script>
自定义内容
通过 content 插槽完全自定义弹出层内容:
<SeaPopover>
<button>点击</button>
<template #content>
<view style="padding: 20rpx;">自定义内容,可以是任何视图</view>
</template>
</SeaPopover>
API
Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| options | 选项列表,若为对象数组,需配合 value-key |
Array | [] |
| selected (v-model) | 当前选中值 | String / Number / Object | null |
| value-key | 指定对象选项的比对字段(如 'id') |
String | '' |
| placement | 弹出位置:'auto' / 'top' / 'bottom' / 'left' / 'right' 及 -start / -end |
String | 'auto' |
| theme | 主题:'light' / 'dark' |
String | 'light' |
| bg-color | 自定义背景色,优先级高于 theme | String | '' |
| backdrop-filter | 是否启用毛玻璃效果(遮罩虚化) | Boolean | false |
| show-mask | 是否显示透明遮罩层 | Boolean | true |
| mask-closable | 是否允许点击遮罩关闭弹窗 | Boolean | true |
| offset | 弹出层与触发器的间距(px) | Number | 20 |
| visible-ratio | 自动定位时,屏幕可见区域最小比例 | Number | 0.7 |
| duration | 动画持续时间(ms) | Number | 100 |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| select | 选中选项时触发 | item – 当前选中项 |
| handleClick | 点击触发器切换显示状态时触发 | show – 当前显示状态 |
Slots
| 插槽名 | 说明 |
|---|---|
| default | 触发器(点击弹出) |
| content | 自定义弹出内容(替代默认选项列表) |
注意事项
- 组件依赖
scss,请确保项目已支持。 - 在自定义内容插槽中,组件不会自动处理点击关闭逻辑,你需要自己管理
show状态。 - 在 H5 端,若遇到遮罩层点击关闭不生效,检查是否被其他元素遮挡。
更新日志
详见 changelog.md
许可
MIT

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 61
赞赏 1
下载 12525178
赞赏 1944
赞赏
京公网安备:11010802035340号