1.0.2 • Published 6 months ago
@tanzhenxing/zx-select-picker v1.0.2
zx-select-picker 选择器组件
介绍
zx-select-picker 是一个底部弹出式选择器组件,支持单选和多选模式,可自定义样式和图标。
特性
- 支持单选和多选模式
- 自定义标题和样式
- 支持选项图标
- 可自定义底部按钮
- 丰富的自定义样式配置
属性说明
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| show | Boolean | false | 是否显示选择器 |
| list | Array | [] | 选择项列表,可以是字符串数组或对象数组,对象格式需包含text属性 |
| height | Number/String | 600 | 选择器内容区高度,单位rpx |
| radius | Number/String | 24 | 选择器圆角大小,单位rpx |
| title | String | '请选择' | 选择器标题 |
| titleSize | Number/String | 32 | 标题字体大小,单位rpx |
| titleColor | String | '#333' | 标题字体颜色 |
| fontWeight | Number/String | 400 | 标题字体粗细 |
| multiple | Boolean | false | 是否支持多选 |
| background | String | '#fff' | 选择器背景色 |
| padding | String | '30rpx' | 选项内边距 |
| checkboxColor | String | '#5677fc' | 选择框选中后的颜色 |
| borderColor | String | '#ccc' | 选择框边框颜色 |
| isCheckMark | Boolean | false | 是否使用对勾样式的选择框 |
| checkmarkColor | String | '#fff' | 对勾的颜色 |
| reverse | Boolean | false | 是否反转选项布局(文字在左,选择框在右) |
| dividerLine | Boolean | true | 是否显示选项分割线 |
| dividerColor | String | '#EEEEEE' | 分割线颜色 |
| bottomLeft | Number/String | 30 | 分割线左侧距离,单位rpx |
| highlight | Boolean | true | 点击选项时是否高亮 |
| iconWidth | Number/String | 48 | 图标宽度,单位rpx |
| size | Number/String | 30 | 选项文字大小,单位rpx |
| color | String | '#333' | 选项文字颜色 |
| btnText | String | '确定' | 确认按钮文字 |
| btnBackground | String | '#5677fc' | 确认按钮背景色 |
| btnColor | String | '#fff' | 确认按钮文字颜色 |
| maskBackground | String | 'rgba(0,0,0,.6)' | 遮罩层背景色 |
| maskClosable | Boolean | false | 点击遮罩层是否可关闭选择器 |
| zIndex | Number/String | 1000 | 选择器层级 |
事件
| 事件名 | 说明 | 返回值 |
|---|---|---|
| confirm | 点击确认按钮时触发 | 单选模式:{index, options},多选模式:{options} |
| close | 关闭选择器时触发 | {} |
使用示例
<template>
<view>
<button @click="openSelect">打开选择器</button>
<zx-select :show="showSelect" :list="selectList" @confirm="onConfirm" @close="onClose"></zx-select>
</view>
</template>
<script setup>
import { ref } from 'vue';
const showSelect = ref(false);
const selectList = ref(['选项1', '选项2', '选项3']);
const openSelect = () => {
showSelect.value = true;
};
const onConfirm = (e) => {
console.log('选中的选项:', e);
showSelect.value = false;
};
const onClose = () => {
showSelect.value = false;
};
</script>高级使用
对象数组选择
<template>
<view>
<button @click="openSelect">打开选择器</button>
<zx-select :show="showSelect" :list="selectList" @confirm="onConfirm" @close="onClose"></zx-select>
</view>
</template>
<script setup>
import { ref } from 'vue';
const showSelect = ref(false);
const selectList = ref([
{ text: '选项1', checked: true, src: '/static/icon1.png' },
{ text: '选项2', checked: false, src: '/static/icon2.png' },
{ text: '选项3', checked: false, src: '/static/icon3.png' }
]);
const openSelect = () => {
showSelect.value = true;
};
const onConfirm = (e) => {
console.log('选中的选项:', e);
showSelect.value = false;
};
const onClose = () => {
showSelect.value = false;
};
</script>多选模式
<template>
<view>
<button @click="openMultiSelect">打开多选选择器</button>
<zx-select
:show="showMultiSelect"
:list="multiSelectList"
:multiple="true"
@confirm="onMultiConfirm"
@close="onMultiClose"
></zx-select>
</view>
</template>
<script setup>
import { ref } from 'vue';
const showMultiSelect = ref(false);
const multiSelectList = ref(['选项1', '选项2', '选项3', '选项4']);
const openMultiSelect = () => {
showMultiSelect.value = true;
};
const onMultiConfirm = (e) => {
console.log('选中的多个选项:', e.options);
showMultiSelect.value = false;
};
const onMultiClose = () => {
showMultiSelect.value = false;
};
</script>