Snippets Animation

Bootstrap 5 Carousel with Multiple Items per Slide

A responsive carousel that shows three destination cards per slide on desktop, two on tablets and one on phones, with round arrow buttons, pill indicators and touch swiping.

Bootstrap 5 No jQuery Jan 2020 12.7K views

<section class="wdw-stage">
  <div class="container mc-wrap">
    <div class="d-flex flex-column flex-sm-row align-items-sm-end justify-content-between gap-3 mb-4">
      <div>
        <span class="wdw-eyebrow mb-1">Destinations</span>
        <h2 class="h2 wdw-heading mb-0">Places worth the trip</h2>
      </div>
      <div class="d-flex gap-2">
        <button class="btn btn-outline-secondary mc-arrow rounded-circle" type="button" data-bs-target="#mc-carousel" data-bs-slide="prev" aria-label="Previous slide"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.200" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 5l-7 7 7 7"/></svg></button>
        <button class="btn btn-outline-secondary mc-arrow rounded-circle" type="button" data-bs-target="#mc-carousel" data-bs-slide="next" aria-label="Next slide"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.200" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 5l7 7-7 7"/></svg></button>
      </div>
    </div>

    <div id="mc-carousel" class="carousel slide" aria-roledescription="carousel" aria-label="Featured destinations">
      <div class="carousel-inner" id="mc-inner"></div>
      <div class="carousel-indicators mc-dots position-static mt-4 mb-0 mx-0 justify-content-center" id="mc-dots"></div>
    </div>
  </div>
</section>

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