交互式图表需支持键盘遍历
别名: 键盘可达性 · 焦点管理
概念解释
运动障碍用户、屏幕阅读器用户以及大量习惯键盘操作的普通用户,都无法或不便使用鼠标精确悬停在图表的数据点上。交互式图表的悬停提示、点选下钻、缩放平移如果只能通过鼠标完成,这些功能对键盘用户等于不存在。键盘遍历(keyboard traversal)的要求是:图表的全部交互功能都能通过键盘(Tab、方向键、Enter)触达并操作,且当前焦点位置在视觉与非视觉层面都有清晰指示。
机制
键盘可达的实现机制是把图表元素纳入焦点序列并赋予语义:SVG 或 DOM 化的图表元素可以获得焦点(tabindex)、响应键盘事件、并通过无障碍树暴露角色与状态(ARIA)。设计上的核心难点是焦点粒度——把图表的每个数据点都放进 Tab 序列会让用户在几百次 Tab 后才能离开图表,合理方案是分层遍历:图表整体是一个焦点站(一次 Tab 进入),进入后用方向键在数据点间移动(方向键导航不占用 Tab 序列),Enter 触发选中或下钻,Escape 返回整体焦点。焦点指示的可见性是并行要求:视觉焦点环(focus ring)不能因为美观被移除(低视力用户依赖它定位),屏幕阅读器用户则依赖焦点的语义播报("当前点:3 月,销售额 42 万")。交互图表还有状态的可达性问题:通过鼠标才能发现的交互(悬停提示)对键盘用户不可发现,需要显式的键盘提示("使用方向键浏览数据点")或把悬停内容同时绑定到焦点事件。
边界
键盘遍历的完整实现有真实的工程成本:canvas 渲染的图表(高性能场景的主流选择)没有天然的 DOM 元素,需要手动维护虚拟焦点层(一个覆盖在 canvas 上的透明焦点代理),这是很多图表库可达性不足的技术根源。遍历设计还要平衡普通用户与键盘用户的体验:把全部数据点纳入遍历对运动障碍用户是必要的,但也增加了 Tab 序列的长度,页面级需要提供跳过机制(skip link)。触屏用户构成第三个输入通道:悬停不存在于触屏上,触摸目标需要满足最小尺寸(44px 级别)并支持替代交互(点按即显示提示)。三种输入形态的兼容是交互图表可达性的完整边界。
怎么落地
- 图表容器可聚焦(tabindex=0),进入后方向键遍历数据点,Enter 触发操作,Escape 退出——建立统一的键盘交互约定并在帮助中说明。
- 焦点指示保留默认焦点环或提供等效的高对比指示;焦点移动时同步更新屏幕阅读器播报(aria-live)。
- 悬停提示内容同步绑定到键盘焦点事件,保证键盘用户能读到与鼠标用户相同的信息。
- 验证:拔掉鼠标,仅用键盘完成"浏览所有数据点并查看其中一个的详情"任务;无法完成即键盘遍历不达标。