Accordion

An accordion is an interactive container that expands and collapses to hide or reveal nested content. It takes advantage of progressive disclosure to help reduce page scrolling, by allowing users to choose whether they want to show or hide more detailed information as needed.

Examples

Fluid

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Fixed

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Definition list

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Bordered

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Large bordered

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Toggle icon at start

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis molestie lorem lacinia dolor aliquet faucibus. Suspendisse gravida imperdiet accumsan. Aenean auctor lorem justo, vitae tincidunt enim blandit vel. Aenean quis tempus dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Documentation

Overview

There are two variations to build the accordion component. The first is to use <div> and <h1 - h6> tags:

  • .pf-v6-c-accordion is placed on a <div>,
  • .pf-v6-c-accordion__toggle is placed on a <button> that is inside a <h1-h6>, and
  • .pf-v6-c-accordion__expandable-content is placed on a <div>.

The heading level that you use should fit within the rest of the headings outlined on your page.

Another variation is using the definition list:

  • .pf-v6-c-accordion is placed on a <dl>,
  • .pf-v6-c-accordion__toggle is placed on a <button> that is inside a <dt>, and
  • .pf-v6-c-accordion__expandable-content is placed on a <dd>.

Usage

Class
Applied to
Outcome
.pf-v6-c-accordion
<div>, <dl>
Initiates an accordion component. Required
.pf-v6-c-accordion__item
<div>
Initiates an accordion item component. Required
.pf-v6-c-accordion__toggle
<h1-h6><button>, <dt><button>
Initiates a toggle in the accordion. Required
.pf-v6-c-accordion__toggle-text
<span>
Initiates the text inside the toggle. Required
.pf-v6-c-accordion__toggle-icon
<span>
Initiates the toggle icon wrapper. Required
.pf-v6-c-accordion__expandable-content
<div>, <dd>
Initiates expandable content. Must be paired with a button
.pf-v6-c-accordion__expandable-content-body
<div>
Initiates expandable content body. Required
.pf-m-bordered
.pf-v6-c-accordion
Modifies the accordion to add borders between items.
.pf-m-display-lg
.pf-v6-c-accordion
Modifies the accordion for large display styling. This variation is for marketing/web use cases.
.pf-m-toggle-start
.pf-v6-c-accordion
Modifies accordion styling when accordion toggle icons are rendered at the start of the toggle, before the toggle text.
.pf-m-expanded
.pf-v6-c-accordion__item
Modifies the accordion item for the expanded state.
.pf-m-fixed
.pf-v6-c-accordion__expandable-content
Modifies the expandable content for the fixed state.

CSS variables

Expand or collapse columnSelectorVariableValue
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--BackgroundColor
(In light theme) #ffffff
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--RowGap
0.25rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__item--BorderRadius
6px
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__item--m-expanded--BackgroundColor
(In light theme) rgba(199, 199, 199, 0.2500)
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--ColumnGap
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--PaddingBlockStart
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--PaddingInlineEnd
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--PaddingBlockEnd
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--m-expanded--PaddingBlockEnd
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--PaddingInlineStart
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--BackgroundColor
(In light theme) rgba(255, 255, 255, 0.0000)
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--hover--BackgroundColor
(In light theme) rgba(199, 199, 199, 0.2500)
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--BorderRadius
6px
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-toggle-start__toggle--ColumnGap
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle-text--Color
(In light theme) #151515
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle-text--FontWeight
400
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--m-expanded__toggle-text--FontWeight
500
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--m-expanded__toggle-text--FontWeight
700
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle-icon--Transition
.2s ease-in 0s
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__toggle--m-expanded__toggle-icon--Rotate
90deg
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--MarginInlineEnd
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--MarginBlockEnd
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--MarginInlineStart
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--BackgroundColor
(In light theme) #ffffff
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--BorderRadius
6px
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--Color
(In light theme) #151515
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--FontSize
0.875rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content--m-fixed--MaxHeight
9.375rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content-body--PaddingBlockStart
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content-body--PaddingInlineEnd
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content-body--PaddingBlockEnd
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content-body--PaddingInlineStart
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__expandable-content-body--expandable-content-body--PaddingBlockStart
0
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--PaddingBlockStart
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--PaddingInlineEnd
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--PaddingBlockEnd
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--m-expanded--PaddingBlockEnd
0.5rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--PaddingInlineStart
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--FontFamily
"Red Hat Display", "RedHatDisplay", "Noto Sans Arabic", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans KR", "Noto Sans Malayalam", "Noto Sans SC", "Noto Sans TC", "Noto Sans Thai", Helvetica, Arial, sans-serif
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle--FontSize
1.125rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__toggle-text--FontWeight
700
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__expandable-content--FontSize
1rem
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-display-lg__expandable-content--Color
(In light theme) #151515
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion--m-bordered--RowGap
0
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__item--m-bordered--BorderBlockEndWidth
1px
:where(:root, .pf-v6-c-accordion)--pf-v6-c-accordion__item--m-bordered--BorderBlockEndColor
(In light theme) #c7c7c7
.pf-v6-c-accordion.pf-m-toggle-start--pf-v6-c-accordion__toggle--ColumnGap
1rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--PaddingBlockStart
1rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--PaddingInlineEnd
1rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--PaddingBlockEnd
1rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--m-expanded--PaddingBlockEnd
0.5rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--PaddingInlineStart
1rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--FontFamily
"Red Hat Display", "RedHatDisplay", "Noto Sans Arabic", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans KR", "Noto Sans Malayalam", "Noto Sans SC", "Noto Sans TC", "Noto Sans Thai", Helvetica, Arial, sans-serif
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--FontSize
1.125rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle-text--FontWeight
700
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__toggle--m-expanded__toggle-text--FontWeight
700
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__expandable-content--FontSize
1rem
.pf-v6-c-accordion.pf-m-display-lg--pf-v6-c-accordion__expandable-content--Color
(In light theme) #151515
.pf-v6-c-accordion.pf-m-bordered--pf-v6-c-accordion--RowGap
0
.pf-v6-c-accordion.pf-m-bordered--pf-v6-c-accordion__item--BorderRadius
0
.pf-v6-c-accordion.pf-m-bordered--pf-v6-c-accordion__toggle--BorderRadius
0
.pf-v6-c-accordion__item.pf-m-expanded--pf-v6-c-accordion__toggle--PaddingBlockEnd
0.5rem
.pf-v6-c-accordion__item.pf-m-expanded--pf-v6-c-accordion__toggle-text--FontWeight
500
.pf-v6-c-accordion__toggle:is(:hover, :focus)--pf-v6-c-accordion__toggle--BackgroundColor
(In light theme) rgba(199, 199, 199, 0.2500)
.pf-v6-c-accordion__expandable-content-body + .pf-v6-c-accordion__expandable-content-body--pf-v6-c-accordion__expandable-content-body--PaddingBlockStart
0