SuperAPI AI 工具集

checkbox

前端与建站

查看项目

更新于 10-16 05:25

技能介绍

复选框(Checkbox)是一种表单控件,允许用户从一组选项中选中一个或多个选项。与单选按钮不同,复选框支持多选,既可以独立使用,也可以作为一组选项的一部分。它适用于表单、设置面板,以及任何需要用户进行多项选择或单独开关某个选项的界面。

用途

当需要用户从一组选项中做出多项选择时,应使用复选框。常见场景包括:

  • 表单偏好:订阅新闻邮件、通信偏好、条款接受
  • 筛选选择:电商中的商品类别、价格区间、功能特性
  • 设置开关:隐私选项、通知偏好、功能启用
  • 多选列表:加入购物车、选择上传文件、选择收件人
  • 协议勾选:服务条款、隐私政策、年龄验证
  • 功能选择:选择附加项、选择服务、挑选选项

何时避免使用

  • 单选场景:应改用单选按钮
  • 二元开/关状态:设置项应改用开关(toggle switch)
  • 空间有限:选项较多时可考虑下拉菜单
  • 即时操作:即时响应应使用按钮
  • 选项互斥:单选按钮更合适

实现流程

  1. 在复制示例前,先确认该模式与问题和约束条件匹配。
  2. 从 references/pattern.md 中的结构和示例入手,然后选择最小可行的变体。
  3. 在叠加视觉打磨之前,先应用无障碍、性能和交互方面的护栏。
  4. 使用测试指南验证键盘、屏幕阅读器、响应式和失败场景下的行为。

无障碍护栏

必需的 ARIA 属性:

  • aria-describedby:链接到额外的帮助文本
  • aria-required:用于必填复选框字段
  • aria-invalid:验证失败时使用
  • aria-expanded:用于可折叠的复选框组

键盘交互模式:资料中提供了一张表格,概述复选框组件的标准键盘交互,但表格内容未在资料中给出。

性能护栏

目标指标:

  • 渲染时间:复选框状态变化 < 16ms
  • 打包体积:基础复选框实现 < 2KB
  • 内存占用:标准复选框组影响极小
  • 无障碍:100% 键盘可导航,兼容屏幕阅读器

优化策略:

  • 事件委托:对复选框组使用单个事件监听器
  • 懒渲染:长列表中只渲染可见的复选框
  • 防抖更新:防止快速选择期间过度重渲染

常见错误

  1. 用复选框做单选 问题:当只有一个选项应被选中时使用复选框,会让用户对交互模型产生困惑。 修复:互斥选项使用单选按钮,复选框只用于多选。

  2. 标签关联不当 问题:没有正确标签的复选框不可访问,且让用户困惑。 修复:始终使用 for 属性关联标签,或将 input 包裹在 label 元素中。

  3. 分组不一致 问题:相关复选框分散且没有视觉分组,使表单难以理解。 修复:使用 fieldset、容器或视觉间距对相关选项分组,以体现关系。

相关模式

  • https://uxpatterns.dev/patterns/forms/button
  • https://uxpatterns.dev/patterns/forms/form-validation
  • https://uxpatterns.dev/patterns/forms/multi-select-input
  • https://uxpatterns.dev/patterns/forms/radio
  • https://uxpatterns.dev/patterns/forms/selection-input
  • https://uxpatterns.dev/patterns/forms/toggle
  • https://uxpatterns.dev/patterns/navigation/pagination

完整实现细节、示例和测试说明,请参见 references/pattern.md。

模式页面:https://uxpatterns.dev/patterns/forms/checkbox