Snippets Accordion

Bootstrap 5 Numbered Accordion with Ordered Steps

An accordion whose items are numbered steps, each opening to reveal a nested ordered list, with only one panel open at a time.

Bootstrap 5 No jQuery Jul 2019 4.9K views

<section class="wdw-stage">
  <div class="container" style="max-width:860px">
    <div class="text-center mb-4">
      <span class="wdw-eyebrow">Getting started</span>
      <h1 class="h2 wdw-heading mt-1 mb-2">Set up your workspace in four steps</h1>
      <p class="wdw-muted mb-3">Work through each step in order. Expand one to see the details.</p>
      <div class="mx-auto" style="max-width:420px">
        <div class="d-flex justify-content-between small fw-semibold mb-1"><span id="ordStepLabel">Step 1 of 4</span><span class="wdw-muted" id="ordPct">0% complete</span></div>
        <div class="progress" role="progressbar" aria-label="Setup progress" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" id="ordProg" style="height:8px"><div class="progress-bar" id="ordBar" style="width:0%"></div></div>
      </div>
    </div>
    <div class="accordion ord-acc" id="ordAcc">
      <div class="accordion-item">
        <h2 class="accordion-header"><button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#ord1" aria-expanded="true" aria-controls="ord1"><span class="ord-num"><span class="ord-n">1</span><svg class="ord-check" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5L20 7"/></svg></span><span class="d-flex flex-column"><span class="ord-title">Create your account</span><span class="ord-desc fw-normal">Start with a work email so teammates can find you.</span></span></button></h2>
        <div id="ord1" class="accordion-collapse collapse show" data-bs-parent="#ordAcc"><div class="accordion-body">
          <ol class="ord-sub mb-0"><li>Sign up with your work email</li><li>Confirm the verification link</li><li>Choose a workspace name</li></ol>
        </div></div>
      </div>
      <div class="accordion-item">
        <h2 class="accordion-header"><button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#ord2" aria-expanded="false" aria-controls="ord2"><span class="ord-num"><span class="ord-n">2</span><svg class="ord-check" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5L20 7"/></svg></span><span class="d-flex flex-column"><span class="ord-title">Invite your team</span><span class="ord-desc fw-normal">Bring in the people who will work alongside you.</span></span></button></h2>
        <div id="ord2" class="accordion-collapse collapse" data-bs-parent="#ordAcc"><div class="accordion-body">
          <ol class="ord-sub mb-0"><li>Import contacts from a CSV file</li><li>Assign roles: admin, editor or viewer</li><li>Send the invitations</li></ol>
        </div></div>
      </div>
      <div class="accordion-item">
        <h2 class="accordion-header"><button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#ord3" aria-expanded="false" aria-controls="ord3"><span class="ord-num"><span class="ord-n">3</span><svg class="ord-check" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5L20 7"/></svg></span><span class="d-flex flex-column"><span class="ord-title">Connect your tools</span><span class="ord-desc fw-normal">Link the apps your team already uses every day.</span></span></button></h2>
        <div id="ord3" class="accordion-collapse collapse" data-bs-parent="#ordAcc"><div class="accordion-body">
          <ol class="ord-sub mb-0"><li>Link your calendar and email</li><li>Add the Slack integration</li><li>Enable webhooks for automation</li></ol>
        </div></div>
      </div>
      <div class="accordion-item">
        <h2 class="accordion-header"><button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#ord4" aria-expanded="false" aria-controls="ord4"><span class="ord-num"><span class="ord-n">4</span><svg class="ord-check" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5L20 7"/></svg></span><span class="d-flex flex-column"><span class="ord-title">Launch your first project</span><span class="ord-desc fw-normal">Put everything together and share your first result.</span></span></button></h2>
        <div id="ord4" class="accordion-collapse collapse" data-bs-parent="#ordAcc"><div class="accordion-body">
          <ol class="ord-sub mb-0"><li>Pick a template to start from</li><li>Set a due date and owners</li><li>Publish and share the link</li></ol>
        </div></div>
      </div>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.

Free to use in personal and commercial projects under the MIT license.