Collapse

Toggle the visibility of content across your project with a few classes and our JavaScript plugins.

Basic Example #

Click the buttons below to show and hide another element via class changes:

  • .collapse hides content
  • .collapsing is applied during transitions
  • .collapse.show shows content

Generally, we recommend using a button with the data-bs-target attribute. While not recommended from a semantic point of view, you can also use a link with the href attribute (and a role="button" ). In both cases, the data-bs-toggle="collapse" is required.

Example
Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
<div class="row g-3">
    <div class="col-auto">
        <a
            class="btn btn-primary"
            data-bs-toggle="collapse"
            href="#collapseExample"
            role="button"
            aria-expanded="false"
            aria-controls="collapseExample"
            >Link with href</a
        >
    </div>
    <div class="col-auto">
        <button
            class="btn btn-primary"
            type="button"
            data-bs-toggle="collapse"
            data-bs-target="#collapseExample"
            aria-expanded="false"
            aria-controls="collapseExample"
        >
            Button with data-bs-target
        </button>
    </div>
</div>
<div class="sa-collapse">
    <div class="sa-collapse__body collapse" id="collapseExample">
        <div class="sa-collapse__content">
            <div class="py-3"></div>
            <div class="card card-body">
                Some placeholder content for the collapse component. This panel is hidden
                by default but revealed when the user activates the relevant trigger.
            </div>
        </div>
    </div>
</div>

Multiple Targets #

A <button> or <a> can show and hide multiple elements by referencing them with a selector in its href or data-bs-target attribute. Multiple <button> or <a> can show and hide an element if they each reference it with their href or data-bs-target attribute

Example
Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
<div class="row g-3">
    <div class="col-auto">
        <a
            class="btn btn-primary"
            data-bs-toggle="collapse"
            href="#multiCollapseExample1"
            role="button"
            aria-expanded="false"
            aria-controls="multiCollapseExample1"
            >Toggle first element</a
        >
    </div>
    <div class="col-auto">
        <button
            class="btn btn-primary"
            type="button"
            data-bs-toggle="collapse"
            data-bs-target="#multiCollapseExample2"
            aria-expanded="false"
            aria-controls="multiCollapseExample2"
        >
            Toggle second element
        </button>
    </div>
    <div class="col-auto">
        <button
            class="btn btn-primary"
            type="button"
            data-bs-toggle="collapse"
            data-bs-target=".multi-collapse"
            aria-expanded="false"
            aria-controls="multiCollapseExample1 multiCollapseExample2"
        >
            Toggle both elements
        </button>
    </div>
</div>
<div class="row">
    <div class="col">
        <div class="sa-collapse">
            <div
                class="sa-collapse__body collapse multi-collapse"
                id="multiCollapseExample1"
            >
                <div class="sa-collapse__content">
                    <div class="py-3"></div>
                    <div class="card card-body">
                        Some placeholder content for the first collapse component of this
                        multi-collapse example. This panel is hidden by default but
                        revealed when the user activates the relevant trigger.
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="col">
        <div class="sa-collapse">
            <div
                class="sa-collapse__body collapse multi-collapse"
                id="multiCollapseExample2"
            >
                <div class="sa-collapse__content">
                    <div class="py-3"></div>
                    <div class="card card-body">
                        Some placeholder content for the second collapse component of this
                        multi-collapse example. This panel is hidden by default but
                        revealed when the user activates the relevant trigger.
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>