Roving tabindex
Roving tabindex gives a group one Tab stop. Arrow keys then move focus among items inside the group.
one tabindex=0 + remaining tabindex=-1 + arrow key swaps the active itemtabindex=0Italic-1Link-1Quote-1focus() + swap tabindexone tabindex=0 + remaining tabindex=-1 + arrow key swaps the active itemA11YAnother example
A toolbar starts with Bold at tabindex 0. The other buttons use -1. Arrow Right moves 0 to Italic.
Main parts
- 01Composite widget
- 02Single Tab stop
- 03Inactive items
- 04Arrow-key rule
- 05Updated active item
- 06Tab exit
Use it when
Use it for composite widgets with documented arrow-key behavior. Keep exactly one item in the normal Tab order.
Do not use it when
Do not use it for unrelated links or the whole page. Do not leave two items with tabindex 0.
Name used in code
one tabindex=0 + remaining tabindex=-1 + arrow key swaps the active item Before you ship
Give assistive tools the control’s name (accessible name), purpose (role), value, and state. Check keyboard use, visible focus, target size, disabled and busy states, feedback, and recovery.
Outcome: Use Roving tabindex to solve this user need without losing the current context. User context: A toolbar starts with Bold at tabindex 0. The other buttons use -1. Arrow Right moves 0 to Italic. Recommended pattern: Roving tabindex. Why it fits: Use it for composite widgets with documented arrow-key behavior. Keep exactly one item in the normal Tab order. Do not use it when: Do not use it for unrelated links or the whole page. Do not leave two items with tabindex 0. Product requirements: Define the default, loading, empty, error, success, and recovery states. Keep user input. Give clear feedback after every action. Accessibility and resilience: Use semantic HTML, full keyboard access, and visible focus. Make the layout work when zoomed and support reduced motion. Follow the project’s current rules. Do not add a new UI library unless the project already uses it. Acceptance criteria: The main task works with keyboard only and at 320px width. Focus and status changes are announced. Check loading, failure, retry, cancel, and reduced-motion paths. Evidence and limits (evidence boundary): It is official for that source. Other platforms or teams may use the term in another way. Unknowns to confirm: Product wording, data source, analytics events, supported devices and languages, and platform limits.
Check this request
Review the current use of Roving tabindex. Definition: Roving tabindex gives a group one Tab stop. Arrow keys then move focus among items inside the group. Release checks: Give assistive tools the control’s name (accessible name), purpose (role), value, and state. Check keyboard use, visible focus, target size, disabled and busy states, feedback, and recovery. Before changing code, report the evidence you found, gaps, severity, and the smallest safe fix.