accordion
An Accordion is a vertically stacked list of elements with show/hide functionality. Tapping or clicking on the arrow icon opens the Accordion.
Each variant has a button with an
id
in the headline. In order to have all the aria-attributes set correctly, this id
needs to be unique and set by the user.
table of content
component variations
accordion
Accordion Headline
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
<div class="a-accordion">
<div class="a-accordion__headline">
<h2 id="accordion-headline" class="a-accordion__headline-heading highlight">
Accordion Headline
</h2>
<button
id="accordion"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="accordion-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="accordion-content"
role="region"
aria-labelledby="accordion-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
accordion open
Accordion Headline
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
<div class="a-accordion a-accordion--open">
<div class="a-accordion__headline">
<h2
id="accordion-open-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline
</h2>
<button
id="accordion-open"
type="button"
class="a-accordion__headline-button"
aria-expanded="true"
aria-controls="accordion-open-content"
aria-label="arrow up"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-up"></i>
</button>
</div>
<div
class="a-accordion__content"
id="accordion-open-content"
role="region"
aria-labelledby="accordion-open-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
accordion small
Accordion Headline
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
<div class="a-accordion a-accordion--small">
<div class="a-accordion__headline">
<h2
id="accordion-small-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline
</h2>
<button
id="accordion-small"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="accordion-small-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="accordion-small-content"
role="region"
aria-labelledby="accordion-small-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
accordion small open
Accordion Headline
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
<div class="a-accordion a-accordion--open a-accordion--small">
<div class="a-accordion__headline">
<h2
id="accordion-small-open-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline
</h2>
<button
id="accordion-small-open"
type="button"
class="a-accordion__headline-button"
aria-expanded="true"
aria-controls="accordion-small-open-content"
aria-label="arrow up"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-up"></i>
</button>
</div>
<div
class="a-accordion__content"
id="accordion-small-open-content"
role="region"
aria-labelledby="accordion-small-open-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
Multi-Accordion Demo
Accordion Headline 1
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
Accordion Headline 2
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
Accordion Headline 3
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
Accordion Headline 4
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
<div class="a-accordion">
<div class="a-accordion__headline">
<h2
id="multi-accordion-demo-1-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 1
</h2>
<button
id="multi-accordion-demo-1"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-demo-1-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-demo-1-content"
role="region"
aria-labelledby="multi-accordion-demo-1-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
<div class="a-accordion">
<div class="a-accordion__headline">
<h2
id="multi-accordion-demo-2-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 2
</h2>
<button
id="multi-accordion-demo-2"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-demo-2-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-demo-2-content"
role="region"
aria-labelledby="multi-accordion-demo-2-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
<div class="a-accordion">
<div class="a-accordion__headline">
<h2
id="multi-accordion-demo-3-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 3
</h2>
<button
id="multi-accordion-demo-3"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-demo-3-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-demo-3-content"
role="region"
aria-labelledby="multi-accordion-demo-3-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
<div class="a-accordion">
<div class="a-accordion__headline">
<h2
id="multi-accordion-demo-4-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 4
</h2>
<button
id="multi-accordion-demo-4"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-demo-4-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-demo-4-content"
role="region"
aria-labelledby="multi-accordion-demo-4-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
Multi-Accordion small Demo
Accordion Headline 1
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
Accordion Headline 2
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
Accordion Headline 3
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
Accordion Headline 4
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit tempore?
<div class="a-accordion a-accordion--small">
<div class="a-accordion__headline">
<h2
id="multi-accordion-small-demo-1-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 1
</h2>
<button
id="multi-accordion-small-demo-1"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-small-demo-1-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-small-demo-1-content"
role="region"
aria-labelledby="multi-accordion-small-demo-1-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
<div class="a-accordion a-accordion--small">
<div class="a-accordion__headline">
<h2
id="multi-accordion-small-demo-2-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 2
</h2>
<button
id="multi-accordion-small-demo-2"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-small-demo-2-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-small-demo-2-content"
role="region"
aria-labelledby="multi-accordion-small-demo-2-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
<div class="a-accordion a-accordion--small">
<div class="a-accordion__headline">
<h2
id="multi-accordion-small-demo-3-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 3
</h2>
<button
id="multi-accordion-small-demo-3"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-small-demo-3-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-small-demo-3-content"
role="region"
aria-labelledby="multi-accordion-small-demo-3-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
<div class="a-accordion a-accordion--small">
<div class="a-accordion__headline">
<h2
id="multi-accordion-small-demo-4-headline"
class="a-accordion__headline-heading highlight"
>
Accordion Headline 4
</h2>
<button
id="multi-accordion-small-demo-4"
type="button"
class="a-accordion__headline-button"
aria-expanded="false"
aria-controls="multi-accordion-small-demo-4-content"
aria-label="arrow down"
>
<i class="a-icon a-accordion__headline-icon boschicon-bosch-ic-down"></i>
</button>
</div>
<div
class="a-accordion__content"
id="multi-accordion-small-demo-4-content"
role="region"
aria-labelledby="multi-accordion-small-demo-4-headline"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ratione quibusdam
blanditiis recusandae labore veritatis, rem at voluptates vero reprehenderit
tempore?
</div>
</div>
additional content
styles SCSS
@use "../../styles/helpers.scss";
/* stylelint-disable a11y/no-display-none */
/* stylelint-disable a11y/line-height-is-vertical-rhythmed */
.a-accordion {
border-top: 0.0625rem solid var(--nested-major__enabled__default__fill, var(--base-major__enabled__default__fill));
&__headline {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 0;
cursor: pointer;
background: var(--nested-pure__enabled__default__fill, var(--integrated-pure__enabled__default__fill));
color: var(--nested-pure__enabled__default__front, var(--integrated-pure__enabled__default__front));
&-button {
background: inherit;
border: 0;
color: inherit;
line-height: 1;
padding: 0;
.a-icon {
font-size: 2.25rem;
cursor: pointer;
}
&:focus-visible {
@include helpers.focus-inside;
}
}
&:hover,
&:hover &-button {
color: var(--nested-pure__enabled__hovered__front, var(--integrated-pure__enabled__hovered__front));
}
&:active,
&:active &-button {
color: var(--nested-pure__enabled__pressed__front, var(--integrated-pure__enabled__pressed__front));
}
}
&__headline-heading {
@include helpers.size-xl;
margin: unset;
margin-right: 0.75rem;
}
&__content {
display: none;
padding: 0 0 3rem;
}
&.a-accordion--open {
> .a-accordion__content {
display: block;
}
}
&.a-accordion--small {
.a-accordion__headline-heading {
@include helpers.size-m;
}
.a-accordion__content {
padding: 0 0 3rem;
}
}
@include helpers.desktop-and-up {
.a-accordion__content {
padding: 0 3rem 3rem 0;
}
}
}