Roving tabindex
单一 Tab 停靠点
Roving tabindex 让一组控件只占一个 Tab 停靠点。进入后,方向键会在同组项目之间移动焦点。
one tabindex=0 + remaining tabindex=-1 + arrow key swaps the active itemtabindex=0斜体-1链接-1引用-1focus() + swap tabindexone tabindex=0 + remaining tabindex=-1 + arrow key swaps the active itemA11Y另一个例子
工具栏一开始只有“粗体”使用 tabindex 0,其他按钮使用 -1。按向右键后,0 会移到“斜体”。
主要部分
- 01复合组件
- 02单一 Tab 停靠点
- 03未激活项目
- 04方向键规则
- 05更新后的当前项目
- 06Tab 离开位置
什么时候用
复合组件有明确的方向键操作规则时,可以使用这个方法。普通 Tab 顺序中只能保留一个项目。
什么时候不要用
不要用在互不相关的链接或整个页面。也不要让两个项目同时使用 tabindex 0。
代码里的名称
one tabindex=0 + remaining tabindex=-1 + arrow key swaps the active item 上线前要检查
让辅助工具知道控件的名称(无障碍名称)、用途(角色)、值与状态。检查键盘操作、清楚可见的焦点、点击范围、禁用与忙碌状态、反馈及恢复。
预期结果:使用 单一 Tab 停靠点 (Roving tabindex) 解决这项需求,同时保留用户当前的操作上下文。 用户场景:工具栏一开始只有“粗体”使用 tabindex 0,其他按钮使用 -1。按向右键后,0 会移到“斜体”。 建议界面模式:单一 Tab 停靠点 (Roving tabindex)。 适用理由:复合组件有明确的方向键操作规则时,可以使用这个方法。普通 Tab 顺序中只能保留一个项目。 不应使用的情况:不要用在互不相关的链接或整个页面。也不要让两个项目同时使用 tabindex 0。 产品要求:定义默认、加载、没有内容、错误、成功与恢复状态。保留用户已输入的内容,每个操作后都提供清楚反馈。 无障碍与韧性:使用结构正确的 HTML(语义化 HTML)和完整键盘操作。焦点要清楚可见,布局缩放后仍要好用。也要提供减少动态效果。遵守项目现有规则。除非项目已采用,否则不要新增界面组件库。 验收标准:主要任务可只用键盘完成,在 320px 宽度也能正常使用。焦点与状态变化可被辅助工具读出。加载、失败、重试、取消与减少动态效果都已验证。 证据与限制(证据边界):它只代表该来源的官方说法。其他平台或团队可能有不同用法。 待确认:产品文字、数据来源、分析事件、支持设备与语言,以及平台特有限制。
检查这份需求
请 AI 编程助手检查当前如何使用 单一 Tab 停靠点 (Roving tabindex)。 定义:Roving tabindex 让一组控件只占一个 Tab 停靠点。进入后,方向键会在同组项目之间移动焦点。 生产环境检查:让辅助工具知道控件的名称(无障碍名称)、用途(角色)、值与状态。检查键盘操作、清楚可见的焦点、点击范围、禁用与忙碌状态、反馈及恢复。 修改程序前,先列出看到的证据、缺口、严重程度,以及最小且安全的修正。