肢体障碍用户需键盘等非精细操作支持,HTML控件应优先用原生元素、添加tabindex、支持方向键/Enter/Space、禁用悬停与长按、提供键盘输入与ARIA实时反馈,并精准管理焦点。

肢体障碍用户往往依赖键盘、开关设备或语音辅助工具操作页面,HTML交互控件若仅靠鼠标点击或触摸拖拽,会直接切断他们的操作路径。核心问题不是“能不能点”,而是“能不能用非精细动作稳定触发并精确控制”。
确保所有控件支持完整键盘导航(Tab + Enter/Space + 方向键)
很多自定义按钮、滑块、旋钮在 DOM 中是 <div> 或 <span>,默认不可聚焦,也无法响应键盘事件。
- 给可交互元素显式添加
tabindex="0",使其进入 Tab 顺序;若为禁用状态,改用tabindex="-1"并配合aria-disabled="true" -
<button>、<a href>、<input>等原生控件自带键盘支持,优先使用——不要用<div onclick>模拟按钮 - 方向键(←↑→↓)必须能微调值:例如
jquery-knob需启用cursor: true并监听keydown处理方向键逻辑;bootstrap-slider默认支持方向键步进,但需确认step值足够小(如step: 1) - Enter 和 Space 键行为要一致:Enter 确认当前值,Space 触发切换(如开关类控件),避免只响应其中一种
避免依赖悬停(hover)和长按等鼠标/触控专属交互
悬停菜单、tooltip、长按弹出操作栏对无法稳定悬停或持续按压的用户极不友好,且多数开关设备无法模拟这类行为。
- 移除纯 CSS 的
:hover显示关键功能(如编辑按钮、删除图标),改用常驻可见控件,或通过focus-within支持键盘焦点展开 - 禁用
touchstart+setTimeout实现的“长按”逻辑;如需上下文操作,提供显式按钮(如“更多操作”)或键盘快捷键(如 Shift+Enter) - 拖拽类控件(如滑块手柄)必须同时支持键盘输入:显示
input[type="number"]或启用displayInput: true(如jquery-knob),让用户能直接键入数值
配置 ARIA 状态与实时反馈,弥补视觉反馈缺失
肢体障碍用户可能无法快速扫视界面变化,需要明确、及时的语义化反馈来确认操作是否生效。
立即学习“前端免费学习笔记(深入)”;
- 动态更新控件状态时,用
aria-valuenow、aria-valuetext同步更新(如bootstrap-slider的formatter函数会自动设置aria-valuetext) - 值变更后,触发
aria-live="polite"区域播报(例如:<div aria-live="polite" class="sr-only">音量已设为 65%</div>),避免打断当前任务 - 禁用状态必须同时设置
aria-disabled="true"和disabled属性(对原生元素),否则键盘仍可聚焦但无响应,造成困惑 - 避免仅靠颜色或图标传达状态(如红/绿色指示灯),补上文字提示或
aria-label(如aria-label="错误:密码长度不足")
最容易被忽略的是「键盘焦点管理」:当用户用 Tab 进入一个复合控件(如带下拉的日期选择器),焦点应自动落入内部可操作子项,且 Esc 键必须能退出并返回上一焦点位置——这需要手动维护 document.activeElement 和 focus() 调用,不能依赖浏览器默认行为。



















