Accordions
Definition
<div>
<h2>
<button
id="accordion-button-1"
type="button"
aria-controls="accordion-content-1"
aria-expanded="false">
Open accordion item
</button>
</h2>
<div id="accordion-content-1" role="region" aria-labelledby="accordion-button-1">
<!-- accordion item contents -->
</div>
</div>
Trigger attributes
The trigger element that controls opening the accordion item (in this case, a button) should include the aria-controls="accordion-content-id"
attributes (where “accordion-content-1” matches the id
attribute on the dialog itself) along with the aria-expanded
attribute, which should be set to true
or false
depending on if the accordion item is open or not.
The trigger should conform to the button role by using a standard <button>
or an element with role="button"
.1 Additionally, the button should be wrapped in an appropriate heading element.
Item attributes
The accordion item itself should include an id
matching the aria-controls
attribute value of the trigger element. In addition, a aria-labelledby
attribute should match the id
attribute value of the trigger element, tying the trigger and item to each other. Finally, the role="region"
attribute should be applied for accordions that support multiple items being open and with less than six items.
Interactivity
When the accordion is focused, triggers should be navigable by tabbing or using the Up
and Down
arrow keys. Additionally, the Home
and End
keys can be used to jump the first or last trigger respectively.