Checkbox
多选框,可独立使用或置于 CheckboxGroup 中管理一组选项,支持半选态。
如何引入
import { Checkbox } from '@chenzy-design/svelte';基础用法
单个复选框,支持受控与非受控,及禁用状态。
复选框组
CheckboxGroup 以数据驱动方式渲染多选项,onChange 回调返回选中值数组。
已选:a
卡片形态
设置 type="card" 以整卡点击区渲染,extra 显示辅助说明,适合套餐选择场景。
辅助文本
extra 传入副文本,经 aria-describedby 关联,点击区域含辅助文本,过长自动换行。
禁用
disabled 禁用复选框,选中/未选中均可禁用,禁用时不可聚焦与切换。
全选与半选
indeterminate 表达部分选中态,配合 checkAll 实现全选/清空联动。
受控
外部持有 checked/disabled,按钮编程式联动切换选中与禁用。
排列方向
direction 控制 CheckboxGroup 内布局,vertical(默认)或 horizontal。
vertical(默认)
horizontal
纯卡片形态
type="pureCard" 带背景但无 checkbox 框的纯卡片样式。
API 参考
Checkbox
Props
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
checked | 受控选中;提供则为受控 | boolean | undefined |
defaultChecked | 非受控初始选中 | boolean | false |
indeterminate | 半选态(视觉横线) | boolean | false |
value | Group 内的标识值 | string | number | undefined |
disabled | — | boolean | false |
size | — | 'small'|'default'|'large' | default |
status | — | 'default'|'warning'|'error' | default |
type | 展示形态;card 带边框背景且整卡为命中区,pureCard 无边框。Group 透传,单项可覆盖 | 'default'|'card'|'pureCard' | default |
name | — | string | undefined |
extra | 辅助说明,aria-describedby 关联 | string | undefined |
id | — | string | useId() |
addonId | 标签内容容器 id,经 aria-labelledby 关联为可访问名 | string | undefined |
extraId | 辅助说明 id,未提供则由内部生成 | string | undefined |
preventScroll | autoFocus 聚焦时是否阻止滚动(对齐 Semi) | boolean | undefined |
onChange | — | (checked: boolean) => void | undefined |
children | 标签内容 | Snippet | undefined |
Methods
| 属性 | 类型 | 说明 |
|---|---|---|
focus() | — | 命令式聚焦复选框(尊重 preventScroll),经组件实例调用(对齐 Semi) |
blur() | — | 命令式移除焦点(对齐 Semi) |
Accessibility
| ARIA role | checkbox |
| 键盘交互 | Space |
- 隐藏原生 input
- indeterminate 用 DOM 属性
- extra 经 aria-describedby 关联
设计变量
| 变量 | 默认值 | 用法 |
|---|---|---|
--cd-transition-delay-checkbox-bg | var(--cd-motion-delay-none) | 复选框-背景色-延迟时间 |
--cd-transition-delay-checkbox-border | var(--cd-motion-delay-none) | 复选框-边框-延迟时间 |
--cd-transition-duration-checkbox-bg | var(--cd-motion-duration-none) | 复选框-背景色-动画持续时间 |
--cd-transition-duration-checkbox-border | var(--cd-motion-duration-none) | 复选框-边框-动画持续时间 |
--cd-transition-function-checkbox-bg | var(--cd-motion-ease-in) | 复选框-背景色-过渡曲线 |
--cd-transition-function-checkbox-border | var(--cd-motion-ease-in) | 复选框-边框-过渡曲线 |