职责与结构
复选框用于独立、多项选择或随表单提交的确认。立即生效的二元设置使用开关;同一组只选一个使用单选框。全选只控制当前明确范围的可编辑项。
原生 checkbox + 完整可点击标签;相关选项使用 fieldset / legend。全选提供范围说明,部分选择用原生 indeterminate 表达。
变体与 Tokens
| 项目 | 规范 |
|---|---|
| 未选/已选 | checked 是实际选择值,原生 change 提供更新。不要以颜色或 aria-pressed 替代 checked。 |
| 部分选中 | indeterminate 是全选框的汇总状态,不是第三种业务值;根据可编辑子项计算,用户操作全选后回到已选或未选。 |
| 禁用 | disabled 保留选择与说明;全选不改变禁用子项。原生 checkbox 无 readonly,只读展示用带明确文本的结果。 |
| 必填组/错误 | 至少选择一项的组由表单校验,不能给每个 checkbox 添加 required。错误关联到组和可编辑项;独立必须确认项才使用 required。 |
复用 .check-label、--color-primary 与共享焦点色;标签自然换行,选项最小命中高度 --control-lg,组间距 --field-group-gap。
交互与状态示例
交互与无障碍
Tab 依自然顺序聚焦,Space 切换原生 checked;不额外模拟键盘切换。标签整行可点击。全选状态随子项同步,忽略禁用项;组错误修正后清除。长标签换行,控件保持尺寸。提交仅确认本页选择。
接入约定
| 项目 | 规范 |
|---|---|
| checked / indeterminate / disabled | 通过原生属性与 DOM property 管理;indeterminate 不写成无效 HTML 属性,也不手工添加可能失同步的 aria-checked。 |
| 分组与校验 | fieldset / legend 命名组,aria-describedby 关联帮助和错误;提交失败聚焦首个可编辑项。 |
| input / change / reset | 保留原生事件;本页 data-family-checkbox-group 演示全选和校验,重置后重新计算汇总。实际表格继续维护自身分页与选择范围。 |
查看最小使用示例
<fieldset><legend>输出字段</legend>
<label class="check-label"><input type="checkbox" name="fields" value="title">标题</label>
</fieldset>
// 全选框 indeterminate = selected > 0 && selected < editable.length。维护位置:scripts/family-specimens.mjs;示例行为:scripts/family-specimens.js。组合应用见本页末尾引用。