Snippets Animation

Bootstrap 5 Animated Horizontal Timeline

A horizontal company timeline with scrollable year markers, animated detail panels, previous and next buttons and arrow-key navigation.

Bootstrap 5 No jQuery Aug 2019 2.9K views

<section class="wdw-stage">
  <div class="container" style="max-width:960px">
    <div class="mb-4"><span class="wdw-eyebrow">Our story</span><h2 class="wdw-heading display-6 mt-1">Company timeline</h2></div>
    <div class="wdw-card p-4 p-md-5">
      <div class="tl-track-wrap">
        <ol class="tl-track list-unstyled" id="tlTrack" role="tablist" aria-label="Timeline years"><li class="tl-step" role="presentation"><button type="button" role="tab" class="tl-dot" id="tlt0" aria-controls="tlp0" aria-selected="true" tabindex="0"><span class="tl-year">2014</span><span class="tl-mark" aria-hidden="true"></span></button></li><li class="tl-step" role="presentation"><button type="button" role="tab" class="tl-dot" id="tlt1" aria-controls="tlp1" aria-selected="false" tabindex="-1"><span class="tl-year">2016</span><span class="tl-mark" aria-hidden="true"></span></button></li><li class="tl-step" role="presentation"><button type="button" role="tab" class="tl-dot" id="tlt2" aria-controls="tlp2" aria-selected="false" tabindex="-1"><span class="tl-year">2018</span><span class="tl-mark" aria-hidden="true"></span></button></li><li class="tl-step" role="presentation"><button type="button" role="tab" class="tl-dot" id="tlt3" aria-controls="tlp3" aria-selected="false" tabindex="-1"><span class="tl-year">2020</span><span class="tl-mark" aria-hidden="true"></span></button></li><li class="tl-step" role="presentation"><button type="button" role="tab" class="tl-dot" id="tlt4" aria-controls="tlp4" aria-selected="false" tabindex="-1"><span class="tl-year">2022</span><span class="tl-mark" aria-hidden="true"></span></button></li><li class="tl-step" role="presentation"><button type="button" role="tab" class="tl-dot" id="tlt5" aria-controls="tlp5" aria-selected="false" tabindex="-1"><span class="tl-year">2024</span><span class="tl-mark" aria-hidden="true"></span></button></li><li class="tl-step" role="presentation"><button type="button" role="tab" class="tl-dot" id="tlt6" aria-controls="tlp6" aria-selected="false" tabindex="-1"><span class="tl-year">2026</span><span class="tl-mark" aria-hidden="true"></span></button></li></ol>
      </div>
      <div class="tl-body" id="tlBody"><div class="tl-panel" id="tlp0" role="tabpanel" tabindex="0" aria-labelledby="tlt0"><div class="d-flex flex-column flex-sm-row gap-4 align-items-sm-start"><span class="wdw-icon tl-ico" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2l3 7h7l-5.5 4.5L18 21l-6-4-6 4 1.5-7.5L2 9h7z"/></svg></span><div><span class="wdw-eyebrow">2014</span><h3 class="wdw-heading display-6 mt-1 mb-2">Founded</h3><p class="wdw-muted fs-5 mb-4">Two designers start the studio in a shared garage with a single client and a borrowed monitor.</p><div class="d-flex flex-wrap gap-3"><div class="tl-chip"><strong>2</strong><span>Founders</span></div><div class="tl-chip"><strong>1</strong><span>First client</span></div><div class="tl-chip"><strong>0</strong><span>Funding</span></div></div></div></div></div><div class="tl-panel" id="tlp1" role="tabpanel" tabindex="0" aria-labelledby="tlt1" hidden><div class="d-flex flex-column flex-sm-row gap-4 align-items-sm-start"><span class="wdw-icon tl-ico" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8l-9-5-9 5v8l9 5 9-5zM3.3 7L12 12l8.7-5M12 22V12"/></svg></span><div><span class="wdw-eyebrow">2016</span><h3 class="wdw-heading display-6 mt-1 mb-2">First product</h3><p class="wdw-muted fs-5 mb-4">Launch of the original UI kit, downloaded 10,000 times in its first month.</p><div class="d-flex flex-wrap gap-3"><div class="tl-chip"><strong>10k</strong><span>Downloads</span></div><div class="tl-chip"><strong>1</strong><span>Product</span></div><div class="tl-chip"><strong>4</strong><span>Countries</span></div></div></div></div></div><div class="tl-panel" id="tlp2" role="tabpanel" tabindex="0" aria-labelledby="tlt2" hidden><div class="d-flex flex-column flex-sm-row gap-4 align-items-sm-start"><span class="wdw-icon tl-ico" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM23 21v-2a4 4 0 0 0-3-3.9M16 3.1a4 4 0 0 1 0 7.8"/></svg></span><div><span class="wdw-eyebrow">2018</span><h3 class="wdw-heading display-6 mt-1 mb-2">Team of 12</h3><p class="wdw-muted fs-5 mb-4">The studio moves into its first office and opens a second design practice.</p><div class="d-flex flex-wrap gap-3"><div class="tl-chip"><strong>12</strong><span>People</span></div><div class="tl-chip"><strong>2</strong><span>Practices</span></div><div class="tl-chip"><strong>1</strong><span>Office</span></div></div></div></div></div><div class="tl-panel" id="tlp3" role="tabpanel" tabindex="0" aria-labelledby="tlt3" hidden><div class="d-flex flex-column flex-sm-row gap-4 align-items-sm-start"><span class="wdw-icon tl-ico" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 18 0 9 9 0 0 0-18 0zM3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/></svg></span><div><span class="wdw-eyebrow">2020</span><h3 class="wdw-heading display-6 mt-1 mb-2">Going remote</h3><p class="wdw-muted fs-5 mb-4">The whole team goes remote and ships the redesigned component library.</p><div class="d-flex flex-wrap gap-3"><div class="tl-chip"><strong>100%</strong><span>Remote</span></div><div class="tl-chip"><strong>40</strong><span>Components</span></div><div class="tl-chip"><strong>9</strong><span>Time zones</span></div></div></div></div></div><div class="tl-panel" id="tlp4" role="tabpanel" tabindex="0" aria-labelledby="tlt4" hidden><div class="d-flex flex-column flex-sm-row gap-4 align-items-sm-start"><span class="wdw-icon tl-ico" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M16 18l6-6-6-6M8 6l-6 6 6 6"/></svg></span><div><span class="wdw-eyebrow">2022</span><h3 class="wdw-heading display-6 mt-1 mb-2">Open source</h3><p class="wdw-muted fs-5 mb-4">The core library is released under an open licence and gains a global community.</p><div class="d-flex flex-wrap gap-3"><div class="tl-chip"><strong>MIT</strong><span>Licence</span></div><div class="tl-chip"><strong>5k</strong><span>Stars</span></div><div class="tl-chip"><strong>300</strong><span>Contributors</span></div></div></div></div></div><div class="tl-panel" id="tlp5" role="tabpanel" tabindex="0" aria-labelledby="tlt5" hidden><div class="d-flex flex-column flex-sm-row gap-4 align-items-sm-start"><span class="wdw-icon tl-ico" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12M7 10l5 5 5-5M5 21h14"/></svg></span><div><span class="wdw-eyebrow">2024</span><h3 class="wdw-heading display-6 mt-1 mb-2">1M downloads</h3><p class="wdw-muted fs-5 mb-4">Cumulative downloads pass one million across 90 countries.</p><div class="d-flex flex-wrap gap-3"><div class="tl-chip"><strong>1M</strong><span>Downloads</span></div><div class="tl-chip"><strong>90</strong><span>Countries</span></div><div class="tl-chip"><strong>4.9</strong><span>Rating</span></div></div></div></div></div><div class="tl-panel" id="tlp6" role="tabpanel" tabindex="0" aria-labelledby="tlt6" hidden><div class="d-flex flex-column flex-sm-row gap-4 align-items-sm-start"><span class="wdw-icon tl-ico" aria-hidden="true"><svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span><div><span class="wdw-eyebrow">2026</span><h3 class="wdw-heading display-6 mt-1 mb-2">Next chapter</h3><p class="wdw-muted fs-5 mb-4">A new generation of tools built on Bootstrap 5.3 and vanilla JavaScript.</p><div class="d-flex flex-wrap gap-3"><div class="tl-chip"><strong>5.3</strong><span>Bootstrap</span></div><div class="tl-chip"><strong>0</strong><span>Dependencies</span></div><div class="tl-chip"><strong>1</strong><span>Mission</span></div></div></div></div></div></div>
      <div class="d-flex gap-2 mt-4 align-items-center">
        <button type="button" class="btn btn-outline-primary rounded-pill" id="tlPrev">← Previous</button>
        <button type="button" class="btn btn-primary rounded-pill" id="tlNext">Next →</button>
        <span class="ms-auto small wdw-muted" id="tlCount" aria-live="polite"></span>
      </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.