更新记录

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

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。