Skip to content

CheckBox 复选框

介绍

复选框用于选择一个或多个选项。

导入

js
import CheckBox from '@/components/form/CheckBox.vue'
import CheckBoxGroup from '@/components/form/CheckBoxGroup.vue'

用法

单独使用

复选框可以单独使用,通过 v-model 绑定选中状态。

vue
<template>
  <FlexCol :padding="10">
    <CheckBox v-model="value" text="复选框" />
  </FlexCol>
</template>

<script setup>
import { ref } from 'vue';
import CheckBox from '@/components/form/CheckBox.vue';
import FlexCol from '@/components/layout/FlexCol.vue';

const value = ref(false);
</script>

基础用法

通过 CheckBoxGroup 组件可以管理一组复选框,实现多选功能。

vue
<template>
  <FlexCol :padding="10" justify="flex-start">
    <CheckBoxGroup v-model="value">
      <CheckBox name="0" text="复选框 1" :innerStyle="radioStyle" />
      <CheckBox name="1" text="复选框 2" :innerStyle="radioStyle" />
      <CheckBox name="2" text="复选框 3" :innerStyle="radioStyle" />
      <CheckBox name="3" text="复选框 4" :innerStyle="radioStyle" />
    </CheckBoxGroup>
  </FlexCol>
</template>

<script setup>
import { ref } from 'vue';
import CheckBox from '@/components/form/CheckBox.vue';
import CheckBoxGroup from '@/components/form/CheckBoxGroup.vue';
import FlexCol from '@/components/layout/FlexCol.vue';

const value = ref([]);
const radioStyle = {
  padding: '10rpx 0',
}
</script>

禁用状态

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

vue
<template>
  <FlexCol :padding="10">
    <CheckBoxGroup v-model="value">
      <CheckBox name="0" disabled color="danger" text="复选框 1" :innerStyle="radioStyle" />
      <CheckBox name="1" disabled color="success" text="复选框 2" :innerStyle="radioStyle" />
    </CheckBoxGroup>
  </FlexCol>
</template>

<script setup>
import { ref } from 'vue';
import CheckBox from '@/components/form/CheckBox.vue';
import CheckBoxGroup from '@/components/form/CheckBoxGroup.vue';
import FlexCol from '@/components/layout/FlexCol.vue';

const value = ref(['1']);
const radioStyle = {
  padding: '10rpx 0',
}
</script>

自定义形状

支持 square(方形)和 round(圆形)两种形状。

vue
<template>
  <FlexCol :padding="10">
    <CheckBoxGroup v-model="value">
      <CheckBox name="0" shape="round" text="复选框 1" :innerStyle="radioStyle" />
      <CheckBox name="1" shape="square" text="复选框 2" :innerStyle="radioStyle" />
    </CheckBoxGroup>
  </FlexCol>
</template>

<script setup>
import { ref } from 'vue';
import CheckBox from '@/components/form/CheckBox.vue';
import CheckBoxGroup from '@/components/form/CheckBoxGroup.vue';
import FlexCol from '@/components/layout/FlexCol.vue';

const value = ref(['1']);
const radioStyle = {
  padding: '10rpx 0',
}
</script>

自定义颜色

通过 color 属性可以自定义复选框的颜色。

vue
<template>
  <FlexCol :padding="10">
    <CheckBoxGroup v-model="value">
      <CheckBox name="0" color="danger" text="复选框 1" :innerStyle="radioStyle" />
      <CheckBox name="1" color="success" text="复选框 2" :innerStyle="radioStyle" />
    </CheckBoxGroup>
  </FlexCol>
</template>

<script setup>
import { ref } from 'vue';
import CheckBox from '@/components/form/CheckBox.vue';
import CheckBoxGroup from '@/components/form/CheckBoxGroup.vue';
import FlexCol from '@/components/layout/FlexCol.vue';

const value = ref([]);
const radioStyle = {
  padding: '10rpx 0',
}
</script>

配合单元格组件使用

复选框可以与 Cell 组件结合使用,创建列表选择项。

vue
<template>
  <CheckBoxGroup v-model="value">
    <Cell key="1"><CheckBox checkPosition="right" block name="1" text="复选框 1" /></Cell>
    <Cell key="2"><CheckBox checkPosition="right" block name="2" text="复选框 2" /></Cell>
    <Cell key="3"><CheckBox checkPosition="right" block name="3" text="复选框 3" /></Cell>
    <Cell key="4"><CheckBox checkPosition="right" block name="4" text="复选框 4" /></Cell>
  </CheckBoxGroup>
</template>

<script setup>
import { ref } from 'vue';
import CheckBox from '@/components/form/CheckBox.vue';
import CheckBoxGroup from '@/components/form/CheckBoxGroup.vue';
import Cell from '@/components/basic/Cell.vue';

const value = ref([]);
</script>

切换选择

CheckBoxGroup 组件提供了 toggleAll 方法,用于实现全选、全不选和反选功能。

vue
<template>
  <FlexCol :padding="10">
    <CheckBoxGroup v-model="value" ref="checkBoxGroup">
      <CheckBox name="0" text="复选框 1" :innerStyle="radioStyle" />
      <CheckBox name="1" text="复选框 2" :innerStyle="radioStyle" />
      <CheckBox name="2" text="复选框 3" :innerStyle="radioStyle" />
      <CheckBox name="3" text="复选框 4" :innerStyle="radioStyle" />
    </CheckBoxGroup>
    <FlexRow :padding="10" :gap="10">
      <Button type="primary" @click="checkBoxGroup?.toggleAll(true)" text="全选"></Button>
      <Button type="primary" @click="checkBoxGroup?.toggleAll(false)" text="全不选"></Button>
      <Button type="primary" @click="checkBoxGroup?.toggleAll()" text="反选"></Button>
    </FlexRow>
  </FlexCol>
</template>

<script setup>
import { ref } from 'vue';
import CheckBox from '@/components/form/CheckBox.vue';
import CheckBoxGroup, { type CheckBoxGroupInterface } from '@/components/form/CheckBoxGroup.vue';
import FlexCol from '@/components/layout/FlexCol.vue';
import FlexRow from '@/components/layout/FlexRow.vue';
import Button from '@/components/basic/Button.vue';

const value = ref([ '2', '3' ]);
const checkBoxGroup = ref<CheckBoxGroupInterface>();
const radioStyle = {
  padding: '10rpx 0',
}
</script>

API 参考

CheckBox

复选框组件。

Props

名称说明类型必填默认值
modelValue是否选中复选框boolean-false
name当前复选框在复选框组中的valuestring--
text复选框的文字string--
shape复选框的形状"square"|"round"-'square'
block复选框占满整个父元素boolean-false
checkPosition复选框按钮位置,默认在左"left"|"right"-'left'
borderColor复选框未选择时的边框颜色string-'border.input'
checkColor复选框选中时勾的颜色string-'white'
checkSize复选框按钮大小number-36
activeOpacity按下时透明度number-0.75
color复选框的颜色string-'primary'
disabled是否禁用复选框boolean-false
icon选择勾的图标string-'check-mark'
textColor文字颜色string-'text.content'
disabledTextColor禁用状态下文字颜色string-'text.second'
textStyle自定义文字样式TextStyle--
innerStyle自定义样式ViewStyle--

Events

名称说明参数
update:modelValue选中状态变化事件boolean

Slots

名称说明
default复选框的文字内容
check自定义复选框按钮

CheckBoxGroup

复选框组组件,用于管理一组复选框。

Props

名称说明类型必填默认值
modelValue当前复选框组选中的项目string[]-[]
disabled是否禁用整组复选框boolean-false
multiple是否支持多选boolean-true

Events

名称说明参数
update:modelValue选中值变化事件string[]

Slots

名称说明
default包含的复选框组件

Methods

名称说明参数
toggleAll切换所有复选框options?: boolean | CheckBoxGroupToggleOptions

主题变量

名称类型默认值说明
CheckBoxShapestring'square'复选框默认形状
CheckBoxCheckPositionstring'left'复选框默认位置
CheckBoxBorderColorstring'border.input'复选框未选择时的边框颜色
CheckBoxCheckColorstring'white'复选框选中时勾的颜色
CheckBoxTextColorstring'text.content'复选框文字颜色
CheckBoxDisabledTextColorstring'text.second'复选框禁用状态下文字颜色
CheckBoxColorstring'primary'复选框颜色
CheckBoxCheckSizenumber36复选框按钮大小
CheckBoxActiveOpacitynumber0.75按下时透明度
CheckBoxMarginHorizontalnumber4复选框水平边距
CheckBoxTextFontSizenumber28复选框文字大小