Anatomy UI

Tabs


Definition

Tabs include their own patterns and keywords.1 Successfully implementing tabs requires proper role assignment, keyboard focus, and aria attributes.

<div role="tablist" aria-orientation="horizontal" aria-label="Manage your account">
  <button id="tab-1" type="button" role="tab" tabindex="0">Tab 1</button>

  <button id="tab-2" type="button" role="tab" tabindex="-1">Tab 2</button>

  <div role="tabpanel" aria-labelledby="tab-1" tabindex="0">tab 1’s content</div>

  <div role="tabpanel" aria-labelledby="tab-2" tabindex="-1" hidden="true">
    tab 2’s content
  </div>
</div>

List attributes

The container of tabs should include the role="tablist" attribute, along with an aria-orientation attribute containing either vertical or horizontal, depending on the layout of tabs (see the interactivity section for why this matters). An additional aria-label describing the overall purpose of the set of tabs is recommended.


List item attributes

Each button that controls the visibility of a tab should include the role="tab" attribute, a unique id, and a tabindex of 0 if the tab is active or -1 if the tab is inactive.


Panel attributes

Each panel containing the tab’s contents should include the role="tabpanel" attribute, an aria-labelledby value pointing to the id of the related tab navigation button, and a tabindex of 0 if the tab is active or -1 if the tab is inactive. Additionally, the hidden attribute should be set to true or false based on the same parameters as tabindex


Interactivity

When creating tabs, horizontally oriented tab navigation should use the left and right arrow keys for non-pointer based item selection (ie: mouse and touch). Vertical tab navigation should use the up and down arrow keys.