Snippets Animation

Bootstrap 5 Coverflow Image Carousel with Indicators

A 3D coverflow photo carousel with captions, previous and next buttons, dot indicators, keyboard arrows and swipe.

Bootstrap 5 No jQuery Jan 2020 2.1K views

<section class="wdw-stage overflow-hidden"><div class="container" style="max-width:1000px">
<div class="text-center mb-4"><span class="wdw-eyebrow">Gallery</span><h2 class="wdw-heading h2 mb-1">Places worth the trip</h2><p class="wdw-muted mb-0">Use the arrows, swipe, or click a side card.</p></div>
<div class="coverflow" id="coverflow" role="region" aria-roledescription="carousel" aria-label="Travel photos" tabindex="0">
<div class="cf-track">
<figure class="cf-item" role="group" aria-roledescription="slide" aria-label="1 of 7"><img src="https://images.unsplash.com/photo-1506744038136-46273834b3fb?auto=format&fit=crop&w=720&h=720&q=75" width="360" height="360" alt="Alpine Dawn, Switzerland" draggable="false"><figcaption><strong>Alpine Dawn</strong><span>Switzerland</span></figcaption></figure>
<figure class="cf-item" role="group" aria-roledescription="slide" aria-label="2 of 7"><img src="https://images.unsplash.com/photo-1441974231531-c6227db76b6e?auto=format&fit=crop&w=720&h=720&q=75" width="360" height="360" alt="Forest Light, Pacific Northwest" draggable="false"><figcaption><strong>Forest Light</strong><span>Pacific Northwest</span></figcaption></figure>
<figure class="cf-item" role="group" aria-roledescription="slide" aria-label="3 of 7"><img src="https://images.unsplash.com/photo-1469474968028-56623f02e42e?auto=format&fit=crop&w=720&h=720&q=75" width="360" height="360" alt="Golden Coast, Portugal" draggable="false"><figcaption><strong>Golden Coast</strong><span>Portugal</span></figcaption></figure>
<figure class="cf-item" role="group" aria-roledescription="slide" aria-label="4 of 7"><img src="https://images.unsplash.com/photo-1501785888041-af3ef285b470?auto=format&fit=crop&w=720&h=720&q=75" width="360" height="360" alt="Mountain Lake, Canadian Rockies" draggable="false"><figcaption><strong>Mountain Lake</strong><span>Canadian Rockies</span></figcaption></figure>
<figure class="cf-item" role="group" aria-roledescription="slide" aria-label="5 of 7"><img src="https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?auto=format&fit=crop&w=720&h=720&q=75" width="360" height="360" alt="Open Road, Montana" draggable="false"><figcaption><strong>Open Road</strong><span>Montana</span></figcaption></figure>
<figure class="cf-item" role="group" aria-roledescription="slide" aria-label="6 of 7"><img src="https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?auto=format&fit=crop&w=720&h=720&q=75" width="360" height="360" alt="Highland Mist, Scotland" draggable="false"><figcaption><strong>Highland Mist</strong><span>Scotland</span></figcaption></figure>
<figure class="cf-item" role="group" aria-roledescription="slide" aria-label="7 of 7"><img src="https://images.unsplash.com/photo-1519681393784-d120267933ba?auto=format&fit=crop&w=720&h=720&q=75" width="360" height="360" alt="Quiet Valley, Norway" draggable="false"><figcaption><strong>Quiet Valley</strong><span>Norway</span></figcaption></figure>
</div></div>
<div class="d-flex align-items-center justify-content-center gap-3 mt-4"><button class="btn btn-outline-primary rounded-circle p-0" style="width:44px" type="button" id="cfPrev" aria-label="Previous photo"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg></button><div class="d-flex gap-2" id="cfDots" role="tablist" aria-label="Choose photo"></div><button class="btn btn-outline-primary rounded-circle p-0" style="width:44px" type="button" id="cfNext" aria-label="Next photo"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 18l6-6-6-6"/></svg></button></div>
</div></section>

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