Skip to content
通用组件

复选框Checkbox

18px 直角勾选框,选中主色实底;复选组可限制最多选几个,全选框用半选。

Vue
实验import { AkCheckbox, AkCheckboxGroup } from "@mooncellwiki/prts-design-vue"Storybook ↗源码 ↗

18px 直角勾选框,选中 = 主色实底 + 对比色勾(同 Naive UI 的 n-checkbox)。长相由 裸控件规则 给——裸 <input type="checkbox"> 与这里是同一张脸,.ak-check 只负责「框 + 文字」的排布,点文字也能勾。

基本 ​

单独用时 v-model 是布尔值。禁用时框变灰、文字降到禁用色;size="sm" 是 16px 的框(表头里的开关,如天赋表的「潜能」)。

复选组 ​

AkCheckboxGroup(同 Naive 的 n-checkbox-group)的 v-model 是勾上的 value 数组,组里的 AkCheckbox 各写 value。max 选满后没勾的变成禁用——公开招募一次刷 5 个标签、最多选 3 个。组是 role="group",放在表单字段里时字段的标签就是组名。

半选 ​

「全选」框在部分子项勾上时写 indeterminate:框里一横,读屏念「部分选中」。它只管外观,点击照常切换 v-model——由你决定点了之后全选还是全不选。

可访问性 ​

  • 原生 <input type="checkbox"> 包在 <label> 里:Space 切换,点文字也能勾,读屏念「文字,复选框,已勾选」。
  • 没有文字的勾选框(表头里只放一枚图标)要写 label,否则只念「复选框」;开发时漏写会在控制台警告。
  • 焦点只在键盘操作时亮(:focus-visible):青边 + 淡青环。

Vue API ​

AkCheckbox ​

属性类型默认说明
valueCheckValue—在 AkCheckboxGroup 里的取值:勾上时进组的 v-model 数组
indeterminatebooleanfalse半选(一横):「全选」框在部分子项勾上时用。只管外观与读屏的「部分选中」,点击照常切换
disabledbooleanfalse禁用
size"md""sm"—尺寸:sm 16px 框(表头里的开关)· md 18px;不写时跟 AkCheckboxGroup
labelstring—可访问名(aria-label):不写文字(默认插槽)时必填
modelValuebooleanfalse单独用时是否勾上;放在 AkCheckboxGroup 里时由组的 v-model 决定,不用绑
事件参数说明
update:modelValue[value: boolean]
插槽说明
default文字

AkCheckboxGroup ​

属性类型默认说明
disabledbooleanfalse整组禁用
maxnumber—最多勾几个:选满后没勾的变成禁用(公开招募最多选 3 个标签)
minnumber—最少勾几个:到了之后勾着的不能再取消
size"md""sm"—组内勾选框的尺寸
verticalbooleanfalse竖排(默认横排、放不下换行)
labelstring—读屏用的组名(aria-label);放在带标签的 AkField 里时不用写
modelValueCheckValue[][]勾上的 value 数组
事件参数说明
update:modelValue[value: CheckValue[]]
插槽说明
default若干 AkCheckbox(各写 value)

CSS 实现 ​

html
<div class="ak-check-group" role="group" aria-label="获得方式">
  <label class="ak-check"><input type="checkbox" checked>公开招募</label>
  <label class="ak-check is-disabled"><input type="checkbox" disabled>限定寻访</label>
</div>
块元素 __修饰 --

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有