Checkbox 复选框

引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册

基础用法

通过 绑定复选框的勾选状态。

  1. <van-checkbox v-model="checked">复选框</van-checkbox>
  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const checked = ref(true);
  5. return { checked };
  6. },
  7. };

禁用状态

通过设置 disabled 属性可以禁用复选框。

  1. <van-checkbox v-model="checked" disabled>复选框</van-checkbox>

自定义形状

shape 属性设置为 square,复选框的形状会变成方形。

  1. <van-checkbox v-model="checked" shape="square">复选框</van-checkbox>

自定义颜色

通过 checked-color 属性设置选中状态的图标颜色。

  1. <van-checkbox v-model="checked" checked-color="#ee0a24">复选框</van-checkbox>

自定义大小

  1. <van-checkbox v-model="checked" icon-size="24px">复选框</van-checkbox>

自定义图标

通过 icon 插槽自定义图标,可以通过 slotProps 判断是否为选中状态.

  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const checked = ref(true);
  5. return {
  6. checked,
  7. activeIcon: 'https://cdn.jsdelivr.net/npm/@vant/assets/user-active.png',
  8. inactiveIcon:
  9. 'https://cdn.jsdelivr.net/npm/@vant/assets/user-inactive.png',
  10. };
  11. },
  12. };

设置 label-disabled 属性后,点击图标以外的内容不会触发复选框切换。

  1. <van-checkbox v-model="checked" label-disabled>复选框</van-checkbox>

复选框组

复选框可以与复选框组一起使用,复选框组通过 v-model 数组绑定复选框的勾选状态。

  1. <van-checkbox-group v-model="checked">
  2. <van-checkbox name="a">复选框 a</van-checkbox>
  3. <van-checkbox name="b">复选框 b</van-checkbox>
  4. </van-checkbox-group>
  1. export default {
  2. setup() {
  3. const checked = ref(['a', 'b']);
  4. return { checked };
  5. },
  6. };

水平排列

direction 属性设置为 horizontal 后,复选框组会变成水平排列。

  1. <van-checkbox-group v-model="checked" direction="horizontal">
  2. <van-checkbox name="a">复选框 a</van-checkbox>
  3. <van-checkbox name="b">复选框 b</van-checkbox>
  4. </van-checkbox-group>
  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const checked = ref([]);
  5. return { checked };
  6. },
  7. };

限制最大可选数

通过 max 属性可以限制复选框组的最大可选数。

全选与反选

  1. <van-checkbox-group v-model="checked" ref="checkboxGroup">
  2. <van-checkbox name="a">复选框 a</van-checkbox>
  3. <van-checkbox name="b">复选框 b</van-checkbox>
  4. <van-checkbox name="c">复选框 c</van-checkbox>
  5. </van-checkbox-group>
  6. <van-button type="primary" @click="checkAll">全选</van-button>
  7. <van-button type="primary" @click="toggleAll">反选</van-button>
  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const checked = ref([]);
  5. const checkboxGroup = ref(null);
  6. const checkAll = () => {
  7. checkboxGroup.value.toggleAll(true);
  8. }
  9. const toggleAll = () => {
  10. checkboxGroup.value.toggleAll();
  11. },
  12. return {
  13. checked,
  14. checkAll,
  15. toggleAll,
  16. checkboxGroup,
  17. };
  18. },
  19. };

搭配单元格组件使用

搭配单元格组件使用时,需要再引入 CellCellGroup 组件,并通过 Checkbox 实例上的 toggle 方法触发切换。

  1. <van-checkbox-group v-model="checked">
  2. <van-cell-group inset>
  3. <van-cell
  4. v-for="(item, index) in list"
  5. clickable
  6. :key="item"
  7. :title="`复选框 ${item}`"
  8. @click="toggle(index)"
  9. >
  10. <van-checkbox
  11. :name="item"
  12. :ref="el => checkboxRefs[index] = el"
  13. @click.stop
  14. />
  15. </template>
  16. </van-cell>
  17. </van-cell-group>
  18. </van-checkbox-group>
  1. import { ref, onBeforeUpdate } from 'vue';
  2. export default {
  3. setup() {
  4. const checked = ref([]);
  5. const checkboxRefs = ref([]);
  6. const toggle = (index) => {
  7. checkboxRefs.value[index].toggle();
  8. };
  9. checkboxRefs.value = [];
  10. });
  11. return {
  12. list: ['a', 'b'],
  13. toggle,
  14. checked,
  15. checkboxRefs,
  16. };
  17. },
  18. };

Checkbox Props

CheckboxGroup Props

参数说明类型默认值
v-model所有选中项的标识符any[]-
disabled是否禁用所有复选框booleanfalse
max最大可选数,0 为无限制number | string0
direction排列方向,可选值为 horizontalstringvertical
icon-size所有复选框的图标大小,默认单位为 pxnumber | string20px
checked-color所有复选框的选中状态颜色string#1989fa

CheckboxGroup Events

事件名说明回调参数
change当绑定值变化时触发的事件names: any[]

Checkbox Slots

CheckboxGroup 方法

通过 ref 可以获取到 CheckboxGroup 实例并调用实例方法,详见。

方法名说明参数返回值
toggleAll切换所有复选框,传 true 为选中,false 为取消选中,不传参为取反options?: boolean | object-

toggleAll 方法示例

  1. const { checkboxGroup } = this.$refs;
  2. // 全部反选
  3. checkboxGroup.toggleAll();
  4. // 全部选中
  5. checkboxGroup.toggleAll(true);
  6. // 全部取消
  7. checkboxGroup.toggleAll(false);
  8. // 全部反选,并跳过禁用的复选框
  9. checkboxGroup.toggleAll({
  10. skipDisabled: true,
  11. });
  12. // 全部选中,并跳过禁用的复选框
  13. checkboxGroup.toggleAll({
  14. checked: true,
  15. skipDisabled: true,
  16. });

Checkbox 方法

通过 ref 可以获取到 Checkbox 实例并调用实例方法,详见组件实例方法

类型定义

组件导出以下类型定义:

  1. import type {
  2. CheckboxProps,
  3. CheckboxShape,
  4. CheckboxInstance,
  5. CheckboxLabelPosition,
  6. CheckboxGroupProps,
  7. CheckboxGroupInstance,
  8. CheckboxGroupDirection,
  9. CheckboxGroupToggleAllOptions,

CheckboxInstance 和 是组件实例的类型,用法如下:

样式变量

名称默认值描述
—van-checkbox-size20px-
—van-checkbox-border-colorvar(—van-gray-5)-
—van-checkbox-transition-durationvar(—van-animation-duration-fast)-
—van-checkbox-label-marginvar(—van-padding-xs)-
—van-checkbox-label-colorvar(—van-text-color)-
—van-checkbox-checked-icon-colorvar(—van-primary-color)-
—van-checkbox-disabled-icon-colorvar(—van-gray-5)-
—van-checkbox-disabled-label-colorvar(—van-text-color-3)-
—van-checkbox-disabled-background-colorvar(—van-border-color)-