Accordion
ready

Introduction

The accordion applies JavaScript interactions to expand and collapse elements on the page both in isolation and in relation to other accordion sections. It is configurable, so can be applied to different types of elements.

Examples

Unstyled accordion

Toggle 1
Content 1
Toggle 2
Content 2
<div class="accordion" data-js="accordion" data-accordion-start="first-open" data-accordion-type="open-single">
        <div class="accordion__segment" data-js="accordion-segment">
            <div class="accordion__toggle" data-js="accordion-toggle">Toggle 1</div>
            <div class="accordion__content" data-js="accordion-content">Content 1</div>
        </div>
        <div class="accordion__segment" data-js="accordion-segment">
            <div class="accordion__toggle" data-js="accordion-toggle">Toggle 2</div>
            <div class="accordion__content" data-js="accordion-content">Content 2</div>
        </div>
    </div>

Chrome accordion

Toggle 1
Content 1
Toggle 2
Content 2
<div class="accordion accordion--chrome" data-js="accordion" data-accordion-start="all-closed" data-accordion-type="open-single">
        <div class="accordion__segment accordion__segment--chrome" data-js="accordion-segment">
            <div class="accordion__toggle accordion__toggle--chrome" data-js="accordion-toggle">Toggle 1</div>
            <div class="accordion__content accordion__content--chrome" data-js="accordion-content">Content 1</div>
        </div>
        <div class="accordion__segment accordion__segment--chrome" data-js="accordion-segment">
            <div class="accordion__toggle accordion__toggle--chrome" data-js="accordion-toggle">Toggle 2</div>
            <div class="accordion__content accordion__content--chrome" data-js="accordion-content">Content 2</div>
        </div>
    </div>

Chrome and highlighted accordion

Business development 3 openings
Content 1
Business development 3 openings
Content 2
Business development 3 openings
Content 3
Business development 3 openings
Content 4
<div class="accordion accordion--chrome accordion--highlight" data-js="accordion" data-accordion-start="all-closed" data-accordion-type="open-single">
        <div class="accordion__segment accordion__segment--chrome accordion__segment--highlight" data-js="accordion-segment">
            <div class="accordion__toggle accordion__toggle--chrome accordion__toggle--highlight" data-js="accordion-toggle"><span class="heading heading--4 heeading-cta">Business development <span class="link heading__cta text-small-medium">3 openings</span></span></div>
            <div class="accordion__content accordion__content--chrome accordion__content--highlight" data-js="accordion-content">Content 1</div>
        </div>
        <div class="accordion__segment accordion__segment--chrome accordion__segment--highlight" data-js="accordion-segment">
            <div class="accordion__toggle accordion__toggle--chrome accordion__toggle--highlight" data-js="accordion-toggle"><span class="heading heading--4 heeading-cta">Business development <span class="link heading__cta text-small-medium">3 openings</span></span></div>
            <div class="accordion__content accordion__content--chrome accordion__content--highlight" data-js="accordion-content">Content 2</div>
        </div>
        <div class="accordion__segment accordion__segment--chrome accordion__segment--highlight" data-js="accordion-segment">
            <div class="accordion__toggle accordion__toggle--chrome accordion__toggle--highlight" data-js="accordion-toggle"><span class="heading heading--4 heeading-cta">Business development <span class="link heading__cta text-small-medium">3 openings</span></span></div>
            <div class="accordion__content accordion__content--chrome accordion__content--highlight" data-js="accordion-content">Content 3</div>
        </div>
        <div class="accordion__segment accordion__segment--chrome accordion__segment--highlight" data-js="accordion-segment">
            <div class="accordion__toggle accordion__toggle--chrome accordion__toggle--highlight" data-js="accordion-toggle"><span class="heading heading--4 heeading-cta">Business development <span class="link heading__cta text-small-medium">3 openings</span></span></div>
            <div class="accordion__content accordion__content--chrome accordion__content--highlight" data-js="accordion-content">Content 4</div>
        </div>
    </div>

Dependencies

  • src/html/components/accordion.hbs
  • src/styles/components/blocks/_accordion.scss
  • src/scripts/modules/jquery.pfAccordion.js

Usage

Class/JavaScript Hook Description Required?
.accordion Placed on outer-most tag that will contain the accordion. Required
.accordion__segment Placed on all segments of the accordion that wrap a segment toggle and its expanding or collapsing content. Optional, as the JavaScript will add relevant classes if correct data attributes are defined. See below.
.accordion__toggle Placed on the element inside an accordion segment that will expand and collapse the content of that segment when clicked on. Optional, as the JavaScript will add relevant classes if correct data attributes are defined. See below.
.accordion__content Placed on the element inside the accordion segment which must expand and collapse. Optional, as the JavaScript will add relevant classes if correct data attributes are defined. See below.
.accordion--chrome and accordion__segment|toggle|content--chrome Adds some basic aesthetic styling Optional
.accordion--highlighted and accordion__segment|toggle|content--highlighted Adds slightly more prominent aesthetic styling Optional
[data-js=accordion-segment] Placed on all segments of the accordion that wrap a segment toggle and its expanding or collapsing content. Required, unless the $.pfAccordion.segment property is assigned to another identifier before running $.pfAccordion.init().
[data-js=accordion-toggle] Placed on the element inside an accordion segment that will expand and collapse the content of that segment when clicked on. Required, unless the $.pfAccordion.toggle property is assigned to another identifier before running $.pfAccordion.init().
[data-js=accordion-content] Placed on the element inside the accordion segment which must expand and collapse. Required, unless the $.pfAccordion.content property is assigned to another identifier before running $.pfAccordion.init().