更新记录

1.0.2(2026-08-03) 下载此版本

修改文档

1.0.1(2026-08-03) 下载此版本

优化截图和文档

1.0.0(2026-08-03) 下载此版本

  • 首次发布。
  • 支持多列滚动吸附选择。
  • 支持 show.syncconfirmcancelcolumnchange 事件。
  • 内置默认背景图资源 static/picker-bg.png
  • 支持 backgroundImagebackgroundColoruseDefaultBackground 背景配置。
  • 新增 background 配置,支持纯色和渐变背景。
查看更多

平台兼容性

uni-app(4.07)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
-
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - -

custom-picker

custom-picker 是一个适用于 uni-app 的自定义多列滚动选择器组件,支持滚动吸附、选中项缩放、遮罩关闭、show.sync 双向控制。

特性

  • 支持单列、多列选择
  • 支持 show.sync 控制显示隐藏
  • 支持 confirmcancelcolumnchange 事件
  • 内置默认背景图,支持自定义背景图和纯色背景
  • 纯前端实现,无第三方依赖
  • 兼容 vue2 / vue3

目录结构

uni_modules/custom-picker/
├─ components/custom-picker/custom-picker.vue
├─ pages/demo/demo.vue
├─ screenshots/demo-default.png
├─ screenshots/demo-gradient.png
├─ screenshots/demo-columns.png
├─ static/picker-bg.png
├─ changelog.md
├─ package.json
└─ readme.md

安装方式

下载插件后,放入项目 uni_modules 目录。

使用方式

组件安装后可通过 easycom 直接使用:

<template>
  <custom-picker
    :show="visible"
    @update:show="visible = $event"
    title="出生日期"
    :columns="columns"
    :value="value"
    background-color="#ffffff"
    @confirm="onConfirm"
    @cancel="onCancel"
    @columnchange="onColumnChange"
  />
</template>

<script>
export default {
  data() {
    return {
      visible: false,
      columns: [
        ['北京', '上海', '广州'],
        ['朝阳', '浦东', '天河']
      ],
      value: [0, 0]
    }
  },
  methods: {
    onConfirm(e) {
      console.log('选中结果', e)
    },
    onCancel() {
      console.log('取消选择')
    },
    onColumnChange(e) {
      console.log('列变化', e)
    }
  }
}
</script>

Props

属性名 类型 默认值 说明
show Boolean false 是否显示选择器
title String '' 顶部标题
columns Array [] 选择列数据,格式为二维数组
value Array [] 默认选中索引数组
backgroundImage String '' 自定义背景图片路径,优先级高于内置背景图
background String '' 通用背景样式,支持纯色或 linear-gradient(...) 等渐变
backgroundColor String '#ffffff' 兼容旧写法的背景色配置,未传 background 时生效
useDefaultBackground Boolean true 未传 backgroundImage 时是否使用插件内置背景图

Events

事件名 说明 返回值
update:show 同步显示状态 false
confirm 点击确定 { value, index }
cancel 点击取消或遮罩
columnchange 某列滚动选中变化 { column, value }

confirm 返回值示例

{
  value: ['1995年', '1月', '1日'],
  index: [25, 0, 0]
}

注意事项

  • columns 需要传二维数组。
  • value 需要传索引数组,长度建议与 columns 列数一致。
  • 如果用于联动选择,建议在 columnchange 中按需更新后续列数据。
  • 建议统一使用 :show="visible"@update:show="visible = $event",不要依赖 .sync
  • 若要纯背景色或渐变背景,请设置 :use-default-background="false" 并传入 background
  • 若要自定义背景图,请传入宿主项目可访问的图片路径到 backgroundImage

背景样式示例

使用内置背景图:

<custom-picker
  :show="visible"
  @update:show="visible = $event"
  title="默认背景"
  :columns="columns"
  :value="value"
/>

使用自定义背景图:

<custom-picker
  :show="visible"
  @update:show="visible = $event"
  title="自定义背景图"
  :columns="columns"
  :value="value"
  background-image="/static/my-picker-bg.png"
/>

使用纯色背景:

<custom-picker
  :show="visible"
  @update:show="visible = $event"
  title="纯色背景"
  :columns="columns"
  :value="value"
  :use-default-background="false"
  background="#f3e8ff"
 />

使用渐变背景:

<custom-picker
  :show="visible"
  @update:show="visible = $event"
  title="渐变背景"
  :columns="columns"
  :value="value"
  :use-default-background="false"
  background="linear-gradient(180deg, #f3e8ff 0%, #ffffff 100%)"
  />

演示页

示例页面位于 uni_modules/custom-picker/pages/demo/demo.vue

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。