更新记录
1.0.0(2026-05-12) 下载此版本
发布插件
平台兼容性
uni-app(3.7.10)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | √ | √ | √ | √ | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
n-checkbox
一个基于 uni-app 的自定义多选框组件,支持多端运行。
特性
- 支持自定义尺寸、颜色、边框宽度等样式
- 支持 v-model 双向绑定
- 支持禁用状态
- 支持插槽自定义标签内容
- 纯 CSS 绘制图标,性能优异
- 支持数字、字符串、布尔值作为 value
安装
将组件放入你的 uni-app 项目的 uni_modules 目录中即可使用。
基本使用
<template>
<view>
<n-checkbox v-model="checkedList" value="1" label="选项1" />
<n-checkbox v-model="checkedList" value="2" label="选项2" />
<n-checkbox v-model="checkedList" value="3" label="选项3" />
<view>已选中: {{ checkedList }}</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
const checkedList = ref([])
</script>
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| value | Number / String / Boolean | - | 多选框对应的值 |
| modelValue | Array | [] | 选中项的数组,支持 v-model 双向绑定 |
| label | String | - | 多选框的标签文本 |
| disabled | Boolean | false | 是否禁用 |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| update:modelValue | 选中状态变化时触发,用于 v-model 绑定 | 新的选中数组 |
| change | 选中状态变化时触发 | 新的选中数组 |
Slots
| 插槽名 | 说明 |
|---|---|
| label | 自定义标签内容,优先级高于 label 属性 |
示例:
<n-checkbox v-model="list" value="custom">
<template #label>
<text style="color: red;">自定义标签</text>
</template>
</n-checkbox>
自定义样式(CSS 变量)
你可以通过修改以下 CSS 变量来自定义组件样式:
| CSS 变量名 | 默认值 | 说明 |
|---|---|---|
| --n-checkbox-size | 32rpx | 多选框整体尺寸 |
| --n-checkbox-color | blue | 多选框颜色 |
| --n-checkbox-disabled-color | gray | 禁用状态颜色 |
| --n-checkbox-border-width | 2rpx | 边框宽度 |
全局自定义示例:
:root {
--n-checkbox-size: 40rpx;
--n-checkbox-color: #409eff;
--n-checkbox-border-width: 3rpx;
}
局部自定义示例:
<view style="--n-checkbox-color: green; --n-checkbox-size: 40rpx;">
<n-checkbox v-model="list" value="1" label="绿色大尺寸选项" />
</view>
完整示例
<template>
<view class="demo">
<view class="title">基础用法</view>
<n-checkbox v-model="list1" value="apple" label="苹果" />
<n-checkbox v-model="list1" value="banana" label="香蕉" />
<n-checkbox v-model="list1" value="orange" label="橙子" />
<view class="result">选中:{{ list1 }}</view>
<view class="title">禁用状态</view>
<n-checkbox v-model="list2" value="a" label="禁用未选中" disabled />
<n-checkbox v-model="list2" value="b" label="禁用已选中" disabled />
<view class="result">选中:{{ list2 }}</view>
<view class="title">自定义样式</view>
<view class="custom-group">
<n-checkbox v-model="list3" value="1" label="自定义1" />
<n-checkbox v-model="list3" value="2" label="自定义2" />
<n-checkbox v-model="list3" value="3" label="自定义3" />
</view>
<view class="result">选中:{{ list3 }}</view>
<view class="title">数字值</view>
<n-checkbox v-model="list4" :value="1" label="数字1" />
<n-checkbox v-model="list4" :value="2" label="数字2" />
<n-checkbox v-model="list4" :value="3" label="数字3" />
<view class="result">选中:{{ list4 }}</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
const list1 = ref([])
const list2 = ref(['b'])
const list3 = ref([])
const list4 = ref([])
</script>
<style scoped>
.demo {
padding: 30rpx;
gap: 30rpx;
display: flex;
flex-direction: column;
}
.title {
font-size: 28rpx;
font-weight: bold;
margin-bottom: 20rpx;
}
.result {
margin-top: 20rpx;
color: #666;
}
.custom-group {
--n-checkbox-color: #67c23a;
--n-checkbox-size: 40rpx;
gap: 20rpx;
display: flex;
flex-direction: column;
}
</style>
注意事项
modelValue必须是数组类型,组件会根据value是否在数组中来判断选中状态- 组件会自动触发
update:modelValue事件,确保 v-model 正常工作 - 如果同时设置了 label 属性和 #label 插槽,插槽内容优先级更高

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 101
赞赏 0
下载 11880742
赞赏 1912
赞赏
京公网安备:11010802035340号