SuperAPI AI 工具集

radio

前端与建站

查看项目

更新于 10-16 05:30

技能介绍

用途

Radio(单选按钮)是一种表单控件模式,用于让用户从一组互斥的选项中恰好选择一个选项。它解决的核心问题是:当用户必须从多个选项中做出单一选择时,提供清晰、可访问且符合直觉的交互方式。典型场景包括选择支付方式、选择尺码、选择配送选项等。

与复选框不同,单选按钮以组为单位工作,选中其中一个会自动取消同组内其他选项的选中状态。

主要能力

  • 互斥性:同一时间只能选中一个选项。
  • 分组行为:具有相同 name 属性的所有单选按钮协同工作。
  • 键盘可访问:使用方向键导航,使用空格键选择。
  • 屏幕阅读器友好:正确播报当前选中状态。
  • 视觉反馈:清晰指示选中与未选中状态。

使用方式

实现工作流如下:

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

无障碍防护措施

键盘导航:

  • Tab 键:将焦点移动到单选按钮组。
  • 方向键:在组内选项之间导航。
  • 空格键:选中当前聚焦的选项。
  • 再次按 Tab:移动到下一个表单元素。

屏幕阅读器支持:

  • 语义化 HTML:使用正确的 fieldset 和 legend 结构。
  • ARIA 属性:确保正确的标签和状态播报。
  • 组上下文:屏幕阅读器播报组上下文和当前选中项。
  • 状态变化:选中变化会立即播报。

性能防护措施

目标指标:

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

优化策略:

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

适用场景

适用于用户必须从多个互斥选项中做出单一选择的表单场景,例如选择支付方式、选择尺码、选择配送选项等。

限制与常见错误

  • 用单选按钮实现多选:当用户需要选择多个选项时使用单选按钮会混淆交互模型。修复方式:多选使用复选框,单选按钮仅用于单一选择。
  • 缺少 fieldset 结构:没有正确 fieldset 分组的单选按钮不可访问且令人困惑。修复方式:始终将单选按钮组包裹在带有描述性 legend 的 fieldset 中。
  • 分组不一致:不同 name 的单选按钮散落在表单中会造成混淆。修复方式:为逻辑组中的所有单选按钮使用相同的 name 属性。

相关模式

  • https://uxpatterns.dev/patterns/forms/checkbox
  • https://uxpatterns.dev/patterns/forms/form-validation
  • https://uxpatterns.dev/patterns/forms/selection-input
  • https://uxpatterns.dev/patterns/forms/toggle

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

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