Skip to content

Checkbox 复选 ​

查看 sn-checkbox 的 2.0 版本差异

基础用法 ​

复选组件,用于在一组选项中选中任意多项。

  • 提供方框与标签两种形态的选项,可在同一组内混用
  • 由复选组统一管理选中状态,选项按组内顺序分配索引
  • 选中结果以索引数组双向绑定,支持任意多选

选项必须放在复选组内

sn-checkbox 与 sn-checkbox-tag 自身不维护选中状态,必须作为 sn-checkbox-group 的子代使用,由组统一控制。

vue
<template>
	<sn-checkbox-group v-model="checked">
		<sn-checkbox text="苹果"></sn-checkbox>
		<sn-checkbox text="香蕉"></sn-checkbox>
		<sn-checkbox-tag text="菠萝"></sn-checkbox-tag>
	</sn-checkbox-group>
</template>

<script lang="uts" setup>
const checked = ref<number[]>([])
</script>

更多演示请下载 demo 查看

实现原理 ​

选项通过注入与复选组通信:每个选项在挂载时向组内登记并获得索引(两种形态混用时索引统一分配),选中状态由组统一维护。

组内选项自动换行排列,选项自带右、下外边距;vertical 为 true 时改为纵向排列。

注意事项 ​

再次点击已选中的选项会取消该项选中,其索引从绑定数组中移除。

组配置下发 ​

sn-checkbox-group 上的尺寸、颜色与样式类等配置会统一下发到组内全部 sn-checkbox / sn-checkbox-tag(这些配置项构成组配置对象 CheckboxGroupConfig)。选项组件自身的同名属性(如 icon、type、text-class)优先级高于组配置,可单独覆盖某一选项的表现。尺寸类属性支持 $ 前缀动态尺寸(乘对应乘数),颜色类属性支持 $ 简写(如 $primary 自动引用主题色变量)。

sn-checkbox 属性 ​

参数说明类型默认值可选值
text方框右侧的文本内容String''-
icon选中时方框内显示的图标名称,覆盖组配置 box-iconString''-
disabled是否禁用该选项Booleanfalsetrue | false
containStyle自定义选项整行容器样式(仅当前选项生效)SnStyleValue''-
boxClass勾选方框的外部样式类String''-
customStyle自定义勾选方框样式(仅当前选项生效,定制整行容器用 containStyle)SnStyleValue''-
boxIconClass方框内图标的外部样式类String''-
textClass文本的外部样式类String''-

sn-checkbox-tag 属性 ​

参数说明类型默认值可选值
text标签内部文本内容String''-
type标签主题类型,覆盖组配置 tag-type;默认取组配置,兜底 primaryString-primary | info | success | error | warning
level标签等级(选中态配色深浅),覆盖组配置 tag-level;默认取组配置,兜底 secondString-first | second | third | least
disabled是否禁用该选项Booleanfalsetrue | false
customStyle自定义标签样式(仅当前选项生效)SnStyleValue''-
textClass文本的外部样式类String''-

标签选项未选中时默认 info 色背景配 text 色文字;选中后配色由 type 与 level 共同决定:

level背景文字
firsttype 对应原色(如 $primary)type 对应文字色(如 $primaryText)
secondtype 对应浅色(如 $primaryLight)type 对应原色
thirdinfo 色type 对应原色
least透明type 对应原色

禁用时未选中为 disabled 底配 disabledText 字,选中为 disabledDark 底配 disabledDarkText 字。

sn-checkbox-group 属性 ​

参数说明类型默认值可选值
v-model绑定值,当前选中项的索引数组Array<Number>[]-
vertical是否纵向排列Booleanfalsetrue | false
boxSize勾选方框边长String | Number'19px'-
boxBorderRadius勾选方框圆角String | Number'5px'-
boxBorderWidth勾选方框边框宽度String | Number'2px'-
boxTextSize方框选项文本大小String | Number$13-
boxTextColor方框选项文本颜色String$text-
disabledBoxTextColor禁用状态下方框选项文本颜色String$disabledText-
boxIcon勾选方框内图标名称String'check-fill'-
boxIconSize勾选方框内图标大小String | Number$13-
boxIconColor勾选方框内图标颜色String'#fff'-
disabledBoxIconColor禁用状态下方框内图标颜色String'#fff'-
boxBorderColor勾选方框边框颜色String$line-
disabledBoxBorderColor禁用且未选中时方框边框颜色String$disabled-
boxActiveBorderColor选中时方框边框颜色String$primary-
disabledBoxActiveBorderColor禁用且选中时方框边框颜色String$disabledText-
boxBgColor勾选方框背景颜色Stringvar(--sn-transparent)-
disabledBoxBgColor禁用且未选中时方框背景颜色String$disabled-
boxActiveBgColor选中时方框背景颜色String$primary-
disabledBoxActiveBgColor禁用且选中时方框背景颜色String$disabledText-
tagType标签选项主题类型String'primary'primary | info | success | error | warning
tagLevel标签选项等级String'second'first | second | third | least
tagBorderRadius标签选项圆角String | Number'10px'-
tagPadding标签选项内边距String'6px 10px'-
tagTextSize标签选项文本大小String | Number$12-
tagBgColor标签选项未选中时背景颜色String$info-
disabledTagBgColor禁用且未选中时标签背景颜色String$disabled-
tagActiveBgColor标签选项选中时背景颜色;默认由 tag-type + tag-level 决定String--
disabledTagActiveBgColor禁用且选中时标签背景颜色String$disabledDark-
tagTextColor标签选项未选中时文本颜色String$text-
disabledTagTextColor禁用且未选中时标签文本颜色String$disabledText-
tagActiveTextColor标签选项选中时文本颜色;默认由 tag-type + tag-level 决定String--
disabledTagActiveTextColor禁用且选中时标签文本颜色String$disabledDarkText-
boxContainStyle自定义方框选项整行容器样式SnStyleValue''-
boxStyle自定义勾选方框样式SnStyleValue''-
boxIconStyle自定义方框内图标样式SnStyleValue''-
tagStyle自定义标签选项样式SnStyleValue''-
textStyle自定义选项文本样式SnStyleValue''-
boxContainClass方框选项整行容器的外部样式类String''-
boxClass勾选方框的外部样式类String''-
boxIconClass方框内图标的外部样式类String''-
tagClass标签选项根节点的外部样式类String''-
textClass选项文本的外部样式类String''-
customStyle自定义复选组根节点样式SnStyleValue''-

事件 ​

sn-checkbox-group

名称类型说明
change(value: number[]) => Void选中项变化时触发,携带最新的选中索引数组

插槽 ​

sn-checkbox

名称说明
default替换方框右侧的文本内容,可以是任意内容

sn-checkbox-tag

名称说明
default替换标签内部的文本内容,可以是任意内容

sn-checkbox-group

名称说明
default放置子组件 sn-checkbox 或 sn-checkbox-tag

使用 MIT 协议