Skip to content

Checkbox 复选框

复选框组件一般用于需要多个选择的场景,该组件功能完整,使用方便

平台差异说明

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

基本使用

html
<template>
  <view>
    <su-checkbox-group v-model="checkboxValue1" placement="column" @change="checkboxChange">
      <su-checkbox
        :customStyle="{marginBottom: '8px'}"
        v-for="(item, index) in checkboxList1"
        :key="index"
        :label="item.name"
        :name="item.name"
      ></su-checkbox>
    </su-checkbox-group>
  </view>
</template>

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

  const checkboxValue1 = reactive([])

  // 基本案列数据
  const checkboxList1 = reactive([
    {
      name: '苹果',
      disabled: false
    },
    {
      name: '香蕉',
      disabled: false
    },
    {
      name: '橙子',
      disabled: false
    }
  ])

  const checkboxChange = (n) => {
    console.log('change', n)
  }
</script>

独立使用su-checkbox

  • 通过usedAlone可以设置独立使用su-checkbox,通过v-model:checked双向绑定值。
html
<template>
  <su-checkbox
    :customStyle="{marginBottom: '8px'}"
    label="同意用户协议与隐私条款"
    name="agree"
    usedAlone
    v-model:checked="aloneChecked"
  ></su-checkbox>
</template>
<script setup>
  import { ref } from 'vue'

  const aloneChecked = ref(false)
</script>

自定义形状

通过shape可以设置选择形状

html
<template>
  <view>
    <su-checkbox-group v-model="checkboxValue1" placement="column" @change="checkboxChange">
      <su-checkbox
        :customStyle="{marginBottom: '8px'}"
        v-for="(item, index) in checkboxList1"
        :key="index"
        :label="item.name"
        :name="item.name"
      ></su-checkbox>
    </su-checkbox-group>
  </view>
</template>
<script setup>
  import { ref, reactive } from 'vue'

  const checkboxValue1 = reactive([])

  // 基本案列数据
  const checkboxList1 = reactive([
    {
      name: '苹果',
      disabled: false
    },
    {
      name: '香蕉',
      disabled: false
    },
    {
      name: '橙子',
      disabled: false
    }
  ])

  const checkboxChange = (n) => {
    console.log('change', n)
  }
</script>

禁用checkbox

设置disabledtrue,即可禁用某个组件,让用户无法点击,禁用分为两种状态,一是未勾选前禁用,这时只显示一个灰色的区域。二是已勾选后 再禁用,会有灰色的已勾选的图标,但此时依然是不可操作的。

html
<template>
  <view>
    <su-checkbox-group v-model="checkboxValue1" placement="column" @change="checkboxChange">
      <su-checkbox
        :customStyle="{marginBottom: '8px'}"
        v-for="(item, index) in checkboxList1"
        :key="index"
        :label="item.name"
        :name="item.name"
        :disabled="item.disabled"
      ></su-checkbox>
    </su-checkbox-group>
  </view>
</template>

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

  const checkboxValue1 = reactive([])

  // 基本案列数据
  const checkboxList1 = reactive([
    {
      name: '苹果',
      disabled: false
    },
    {
      name: '香蕉',
      disabled: false
    },
    {
      name: '橙子',
      disabled: true
    }
  ])

  const checkboxChange = (n) => {
    console.log('change', n)
  }
</script>

自定义形状

可以通过设置shapesquare或者circle,将复选框设置为方形或者圆形

html
<su-checkbox-group>
  <su-checkbox v-model="checked" shape="circle">明月</su-checkbox>
</su-checkbox-group>

自定义颜色

此处所指的颜色,为checkbox选中时的背景颜色,参数为active-color

html
<su-checkbox-group>
  <su-checkbox v-model="checked" active-color="red">光影</su-checkbox>
</su-checkbox-group>

文本是否可点击

设置label-disabledfalse,点击文本时,无法操作checkbox

html
<su-checkbox-group>
  <su-checkbox v-model="checked" :label-disabled="false">剑舞</su-checkbox>
</su-checkbox-group>

横向两端排列形式

可以通过设置iconPlacementleft或者right,将复选框勾选图标的对齐设置为左对齐或者右对齐

html
<su-checkbox-group v-model="checked" iconPlacement="right" placement="row">
  <su-checkbox activeColor="red" label="红色"></su-checkbox>
  <su-checkbox activeColor="green" label="绿色"></su-checkbox>
</su-checkbox-group>

示例源码

点击可以查看 右侧演示页面的源码

API

Checkbox Props

参数说明类型默认值可选值
namecheckbox的名称String \ Number \ Boolean--
shape形状,见上方说明String-square
size组件整体的大小String \ Number--
checked是否默认选中Booleanfalsetrue
disabled是否禁用Boolean \ String--
active-color选中时的颜色,如设置CheckboxGroupactive-color将失效String--
inactive-color未选中的颜色String--
icon-size图标大小,单位pxString \ Number--
icon-color图标颜色String--
labellabel提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式String--
label-sizelabel字体大小,单位pxString \ Number--
label-solorlabel的颜色String--
label-disabled是否禁止点击文本操作checkboxBoolean-false / true
usedAlone是否独立使用复选框Booleanfalsetrue
beforeChange选中前置钩子Function--

CheckboxGroup Props

参数说明类型默认值可选值
name标识符String--
v-model/modelValue双向绑定的值,该值是一个数组,代表被选中的checkboxArray--
shape形状,见上方说明Stringcirclesquare
disabled是否禁用所有checkboxBooleanfalsetrue
active-color选中时的颜色,应用到所有子Checkbox组件String#2979ff-
inactive-color未选中的颜色String--
size组件整体的大小,单位pxString \ Number18-
placement布局方式,row-横向,column-纵向Booleanrowcolumn
label-sizelabel字体大小,单位pxString \ Number--
label-solorlabel的颜色String--
label-disabled是否禁止点击文本操作checkboxBoolean-false / true
icon-size图标大小,单位pxString \ Number12-
icon-color图标颜色String#ffffff-
icon-placement勾选图标的对齐方式,left-左边,right-右边Stringleftright
borderBottom竖向配列时,是否显示下划线Booleanfalsetrue

Checkbox Slot

名称说明
icon定义icon内容
label自定义label内容

CheckboxGroup Event

事件名说明回调参数版本
change任一个checkbox状态发生变化时触发,回调为一个对象detail = array( [元素为被选中的checkboxname] )-

su-form-checkbox

su-checkboxsu-checkbox-group组件组合,使用更方便,使用于su-use-form

Props

参数说明类型默认值可选值
options配置项SuUni.Options[]--
modelValuemodelValue---
checkboxGroupPropssu-check-group组件的propsSuCheckboxGroupProps--
checkboxPropssu-check-group组件的propsSuCheckboxProps--
beforeChange选中前置钩子Function--

Released under the MIT License.

Released under the MIT License.