| category | menu_navigation |
|---|---|
| category_description | Accessible menus and hierarchical navigation. |
Menus organise links and commands; hierarchical menus need clear structure and keyboard support. Use lists for simple nav and ARIA menu roles for complex menus.
- 1.3.1 Info & Relationships (Level A) – Group menu items and submenus semantically.
- 2.1.1 Keyboard (Level A) – Arrow keys navigate menus and submenus. (WCAG 2.1.1 – Keyboard)
- 2.4.7 Focus Visible (Level AA) – Menu items show visible focus. (WCAG 2.4.7 – Focus Visible)
- 3.2.3 Consistent Navigation (Level AA) – Menu appears in the same order across pages. (WCAG 3.2.3 – Consistent Navigation)
- For simple nav, use a
<ul>with<li>containing<a>links. - For complex menus, set
role="menubar"on the root,role="menuitem"on each item androle="menu"on submenus; managearia-haspopupandaria-expanded. - Support arrow key navigation according to orientation (horizontal or vertical) and provide Esc to close submenus.
- Provide clear focus styling on each menu item; hide submenus when not active.
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav><ul role="menubar">
<li role="none">
<button role="menuitem" aria-haspopup="true" aria-expanded="false">Products</button>
<ul role="menu" hidden>
<li role="none"><a role="menuitem" href="/phones">Phones</a></li>
<li role="none"><a role="menuitem" href="/tablets">Tablets</a></li>
</ul>
</li>
</ul>