Skip to content

Checkbox 复选框

复选框组件用于在多个选项中进行多选,支持单独使用或配合 CheckboxGroup 使用,支持全选/半选状态。

平台差异说明

App(vue)App(nvue)H5小程序

基本使用

单独使用 Checkbox,通过 v-model 绑定选中状态。

html
<template>
  <seeCheckbox v-model="checked">选项</seeCheckbox>
</template>

<script setup>
import { ref } from 'vue'

const checked = ref(false)
</script>

CheckboxGroup

使用 seeCheckboxGroup 组件包裹多个 seeCheckbox,通过 v-model 绑定选中的值数组。

html
<template>
  <seeCheckboxGroup v-model="checkedList">
    <seeCheckbox label="option1">选项一</seeCheckbox>
    <seeCheckbox label="option2">选项二</seeCheckbox>
    <seeCheckbox label="option3">选项三</seeCheckbox>
  </seeCheckboxGroup>

  <text>选中值:{{ checkedList }}</text>
</template>

<script setup>
import { ref } from 'vue'

const checkedList = ref(['option1'])
</script>

全选和半选

通过 isIndeterminate 属性实现半选状态,配合 CheckboxGroup 的 max 属性使用。

html
<template>
  <seeCheckbox
    v-model="isAllChecked"
    :is-indeterminate="isIndeterminate"
    @change="handleCheckAll"
  >
    全选
  </seeCheckbox>

  <seeCheckboxGroup v-model="checkedList" @change="handleCheckedChange">
    <seeCheckbox label="apple">苹果</seeCheckbox>
    <seeCheckbox label="banana">香蕉</seeCheckbox>
    <seeCheckbox label="orange">橙子</seeCheckbox>
  </seeCheckboxGroup>
</template>

<script setup>
import { ref, computed } from 'vue'

const checkedList = ref(['apple'])
const allOptions = ['apple', 'banana', 'orange']

const isAllChecked = computed(() => {
  return checkedList.value.length === allOptions.length
})

const isIndeterminate = computed(() => {
  return checkedList.value.length > 0 && checkedList.value.length < allOptions.length
})

const handleCheckAll = (val) => {
  checkedList.value = val ? [...allOptions] : []
}

const handleCheckedChange = (value) => {
  const checkedCount = value.length
  isAllChecked.value = checkedCount === allOptions.length
}
</script>

最多/最少选择

通过 maxmin 属性限制可选数量。

html
<template>
  <seeCheckboxGroup v-model="checkedList" :max="3" :min="1">
    <seeCheckbox label="option1">选项一</seeCheckbox>
    <seeCheckbox label="option2">选项二</seeCheckbox>
    <seeCheckbox label="option3">选项三</seeCheckbox>
    <seeCheckbox label="option4">选项四</seeCheckbox>
    <seeCheckbox label="option5">选项五</seeCheckbox>
  </seeCheckboxGroup>

  <text>最少选1个,最多选3个</text>
</template>

<script setup>
import { ref } from 'vue'

const checkedList = ref(['option1'])
</script>

不同尺寸

通过 size 属性设置复选框尺寸,支持 smalldefaultlarge

html
<template>
  <seeCheckboxGroup v-model="checkedList" size="small">
    <seeCheckbox label="option1">小尺寸</seeCheckbox>
    <seeCheckbox label="option2">小尺寸</seeCheckbox>
  </seeCheckboxGroup>

  <seeCheckboxGroup v-model="checkedList" size="default">
    <seeCheckbox label="option1">默认尺寸</seeCheckbox>
    <seeCheckbox label="option2">默认尺寸</seeCheckbox>
  </seeCheckboxGroup>

  <seeCheckboxGroup v-model="checkedList" size="large">
    <seeCheckbox label="option1">大尺寸</seeCheckbox>
    <seeCheckbox label="option2">大尺寸</seeCheckbox>
  </seeCheckboxGroup>
</template>

边框模式

设置 isBorder 属性为 true 可显示边框样式。

html
<template>
  <seeCheckboxGroup v-model="checkedList" is-border>
    <seeCheckbox label="option1">选项一</seeCheckbox>
    <seeCheckbox label="option2">选项二</seeCheckbox>
    <seeCheckbox label="option3">选项三</seeCheckbox>
  </seeCheckboxGroup>
</template>

<script setup>
import { ref } from 'vue'

const checkedList = ref([])
</script>

行内排列

设置 isInline 属性为 true 可使复选框行内排列。

html
<template>
  <seeCheckboxGroup v-model="checkedList" is-inline>
    <seeCheckbox label="option1">选项一</seeCheckbox>
    <seeCheckbox label="option2">选项二</seeCheckbox>
    <seeCheckbox label="option3">选项三</seeCheckbox>
  </seeCheckboxGroup>
</template>

禁用状态

通过 isDisabled 属性设置禁用状态,可在 Checkbox 或 CheckboxGroup 上设置。

html
<template>
  <!-- 单个禁用 -->
  <seeCheckbox v-model="checked" is-disabled>禁用选项</seeCheckbox>

  <!-- 整组禁用 -->
  <seeCheckboxGroup v-model="checkedList" is-disabled>
    <seeCheckbox label="option1">选项一</seeCheckbox>
    <seeCheckbox label="option2">选项二</seeCheckbox>
  </seeCheckboxGroup>
</template>

自定义颜色

通过 checkedColor 属性设置选中时的颜色。

html
<template>
  <seeCheckboxGroup v-model="checkedList" checked-color="#07c160">
    <seeCheckbox label="option1">选项一</seeCheckbox>
    <seeCheckbox label="option2">选项二</seeCheckbox>
  </seeCheckboxGroup>
</template>

API

Checkbox Props

参数名说明类型默认值可选值平台差异
modelValue绑定值(单独使用时)booleanfalse--
label选项的值(在 CheckboxGroup 中使用)string | number | boolean---
isDisabled是否禁用booleanfalse--
isIndeterminate是否半选状态booleanfalse--
size尺寸string'default''small' / 'default' / 'large'-
isBorder是否显示边框booleanfalse--
checkedColor选中时的颜色string''--
name表单字段名string''--

CheckboxGroup Props

参数名说明类型默认值可选值平台差异
modelValue绑定值(string | number | boolean)[][]--
isDisabled是否禁用booleanfalse--
isReadonly是否只读booleanfalse--
max最多可选数量number---
min最少可选数量number---
size尺寸string'default''small' / 'default' / 'large'-
isBorder是否显示边框booleanfalse--
isInline是否行内排列booleanfalse--
checkedColor选中时的颜色string''--
name表单字段名string''--

Events

事件名说明类型默认值可选值平台差异说明
onChange值变化时触发Checkbox: (value: boolean) => void; Group: (value: (string | number | boolean)[]) => void---

Slots

插槽名说明
defaultCheckboxGroup 的子节点(Checkbox 组件)

辽 ICP 备 2025070134 号