Accordion
Group content into sections that can be opened and closed
Overview #
Use the accordion component to group content into sections that can be opened and closed.
An accordion can be useful when there are several pieces of content related to a topic but the user only needs a few of them. Frequently asked questions (FAQs) are often formatted using accordions.
Examples #
<div class="rvt-accordion" data-rvt-accordion="example-accordion">
<h3 class="rvt-accordion__summary">
<button class="rvt-accordion__toggle" data-rvt-accordion-trigger>
<span class="rvt-accordion__toggle-text">Become the best version of yourself at IU</span>
<div class="rvt-accordion__toggle-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<g fill="currentColor">
<path class="rvt-accordion__icon-bar" d="M8,15a1,1,0,0,1-1-1V2A1,1,0,0,1,9,2V14A1,1,0,0,1,8,15Z" />
<path d="M14,9H2A1,1,0,0,1,2,7H14a1,1,0,0,1,0,2Z" />
</g>
</svg>
</div>
</button>
</h3>
<div class="rvt-accordion__panel" data-rvt-accordion-panel>
<p class="rvt-m-all-remove">Develop the skills you need for a rewarding career, and follow in the footsteps of more than 729,000 IU alumni who are leading organizations, innovating the future, and making an impact on their communities and the world.</p>
</div>
<h3 class="rvt-accordion__summary">
<button class="rvt-accordion__toggle" data-rvt-accordion-trigger>
<span class="rvt-accordion__toggle-text">Find your calling</span>
<div class="rvt-accordion__toggle-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<g fill="currentColor">
<path class="rvt-accordion__icon-bar" d="M8,15a1,1,0,0,1-1-1V2A1,1,0,0,1,9,2V14A1,1,0,0,1,8,15Z" />
<path d="M14,9H2A1,1,0,0,1,2,7H14a1,1,0,0,1,0,2Z" />
</g>
</svg>
</div>
</button>
</h3>
<div class="rvt-accordion__panel" data-rvt-accordion-panel>
<p class="rvt-m-all-remove">IU offers more than 2,300 different programs of study. Not sure what to focus on? No problem. Browse by interest area to find options you'd enjoy pursuing.</p>
</div>
<h3 class="rvt-accordion__summary">
<button class="rvt-accordion__toggle" data-rvt-accordion-trigger>
<span class="rvt-accordion__toggle-text">Pursue your passion or explore the possibilities</span>
<div class="rvt-accordion__toggle-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<g fill="currentColor">
<path class="rvt-accordion__icon-bar" d="M8,15a1,1,0,0,1-1-1V2A1,1,0,0,1,9,2V14A1,1,0,0,1,8,15Z" />
<path d="M14,9H2A1,1,0,0,1,2,7H14a1,1,0,0,1,0,2Z" />
</g>
</svg>
</div>
</button>
</h3>
<div class="rvt-accordion__panel" data-rvt-accordion-panel data-rvt-accordion-panel-init>
<p class="rvt-m-all-remove">From nursing to criminal justice, epidemiology to environmental science, social work to cybersecurity, and more than 900 academic programs in between, IU gives you the power to study whatever sparks your interest, with the support of world-class professors and faculty who care about your success.</p>
</div>
</div>
Elements #
Element | Description | Usage | Required | Multiple |
---|---|---|---|---|
Panel | Elements that can be expanded to reveal more information about a subject | Limit accordions to 3-5 panels |
Panel is required |
Component may contain multiple Panel |
Panel summary | Title that appears on a panel. Visible even when the panel is closed. | Limit to a few words or a short phrase |
Panel summary is required |
Component may contain only one Panel summary |
Panel content | Content that is revealed when a panel is opened | Limit to paragraph text, bullet lists, and links. Avoid images, tables, or other complex content. |
Panel content is optional |
Component may contain only one Panel content |
Attributes #
Use the following attributes to configure an accordion:
Attribute | Description |
---|---|
data-rvt-accordion-open-all |
Add to the root data-rvt-accordion element to open all panels on page load |
data-rvt-accordion-panel-init |
Add to an element with the data-rvt-accordion-panel attribute to open that panel on page load |
Usage #
- Specifying trigger and panel IDs. By default, Rivet auto-generates trigger and panel IDs. If you’d like a trigger or panel to have a specific ID, you can explicitly set the
id
,data-rvt-accordion-trigger
, anddata-rvt-accordion-panel
attribute values in your markup. Thedata-rvt-accordion-trigger
attribute value for a given trigger must match thedata-rvt-accordion-panel
attribute value of its associated panel.
Do
- Use to allow people to show/hide information about a related set of topics, such as an FAQ
Don't
- Use to make a long page appear shorter—consider splitting content into separate pages
- Put one accordion inside another
Accessibility #
- Use appropriate header levels. The header level of each panel title should be set to a level appropriate for the accordion’s position in the document outline. In the code examples on this page, each panel title has a header level of
h3
. - Limit the number of panels. Using too many panels can result in difficulty for users that rely on keyboard-only navigation.
ARIA labels #
Label | Description |
---|---|
aria-expanded |
Added to each button element with the data-rvt-accordion-trigger attribute by the component’s JavaScript. Set to true if the associated panel is visible; false otherwise. |
aria-labelledby |
Added to each div element with the data-rvt-accordion-panel attribute by the component’s JavaScript. Set to the id value of the panel’s associated trigger. |
Keyboard navigation #
Keys | Description |
---|---|
enter or space | Open the associated closed panel when focus is on a panel title. When focus is on the title of an opened panel, close that panel. |
tab | Move focus to the next focusable element |
shift + tab | Move focus to the previous focusable element |
↑up | If focus is on a panel title, move to the next panel title. If focus is on the last panel title, do nothing or move focus to the first panel title. |
↓down | If focus is on a panel title, move focus to the previous panel title. If focus is on the first panel title, do nothing or move focus to the last panel title. |
home | When focus is on a panel title, move focus to the first panel title |
end | When focus is on a panel title, move focus to the last panel title |
JavaScript #
Method | Description |
---|---|
open(panelId) |
Opens the panel with the given data-rvt-accordion-panel attribute value |
close(panelId) |
Closes the panel with the given data-rvt-accordion-panel attribute value |
Event | Description | Detail object properties |
---|---|---|
rvtAccordionOpened |
Emitted when an accordion panel is opened |
panel : Reference to opened accordion panel DOM element |
rvtAccordionClosed |
Emitted when an accordion panel is closed |
panel : Reference to closed accordion panel DOM element |