🧱 Bootstrap 5 Carousel / Slider Demo – Responsive Image Slider with Captions
🧲 Introduction – Create Responsive Carousels with Bootstrap 5
Bootstrap 5 Carousel is a built-in component that enables you to display a series of images, text, or custom content inside a sliding container. With built-in support for fade effects, indicators, captions, and controls, it’s perfect for landing pages, hero sliders, and image showcases.
🎯 In this guide, you’ll learn:
- How to implement a basic image slider using
.carousel - Add indicators, navigation arrows, and captions
- Use fade transitions with
.carousel-fade - Customize carousel timing and autoplay behavior
✅ Example 1 – Basic Image Carousel
<div id="carouselExample" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Slide 1">
</div>
<div class="carousel-item">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Slide 2">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
<span class="carousel-control-prev-icon"></span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
<span class="carousel-control-next-icon"></span>
</button>
</div>
| Class | Description |
|---|---|
.carousel | Initializes the carousel container |
.carousel-inner | Holds all .carousel-item slides |
.carousel-item | Defines each slide |
.carousel-control-* | Adds next/prev navigation buttons |
📌 This creates a sliding image carousel with basic controls.
✅ Example 2 – Carousel with Indicators and Captions
<div id="carouselIndicators" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselIndicators" data-bs-slide-to="0" class="active"></button>
<button type="button" data-bs-target="#carouselIndicators" data-bs-slide-to="1"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Slide A">
<div class="carousel-caption d-none d-md-block">
<h5>First Slide Title</h5>
<p>Some quick description goes here.</p>
</div>
</div>
<div class="carousel-item">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Slide B">
<div class="carousel-caption d-none d-md-block">
<h5>Second Slide Title</h5>
<p>Another short caption text here.</p>
</div>
</div>
</div>
</div>
| Class | Description |
|---|---|
.carousel-indicators | Adds clickable dots for slide control |
.carousel-caption | Displays heading and text over image |
.d-none d-md-block | Hides captions on small devices |
📌 Combine indicators and captions for informative, user-friendly sliders.
✅ Example 3 – Fade Transition Carousel
<div id="carouselFade" class="carousel slide carousel-fade" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Fade Slide 1">
</div>
<div class="carousel-item">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Fade Slide 2">
</div>
</div>
</div>
| Class | Description |
|---|---|
.carousel-fade | Enables fade transition between slides |
📌 Ideal for creating smooth, elegant transitions instead of sliding.
✅ Example 4 – Carousel Autoplay Timing Control
<div id="carouselAutoplay" class="carousel slide" data-bs-ride="carousel" data-bs-interval="2000">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Auto 1">
</div>
<div class="carousel-item">
<img src="https://via.placeholder.com/800x300" class="d-block w-100" alt="Auto 2">
</div>
</div>
</div>
| Attribute | Function |
|---|---|
data-bs-interval="2000" | Changes slide interval to 2 seconds |
📌 Customize autoplay speed per carousel or slide with data attributes.
📘 Bootstrap Carousel Utility Reference
| Feature | Class / Attribute | Description |
|---|---|---|
| Carousel Container | .carousel | Main slider component |
| Slide Wrapper | .carousel-inner | Contains .carousel-item elements |
| Individual Slide | .carousel-item | Each slide in the sequence |
| Controls | .carousel-control-next/prev | Navigates between slides |
| Indicators | .carousel-indicators | Shows active slide buttons |
| Captions | .carousel-caption | Overlay for text or headings |
| Fade Effect | .carousel-fade | Adds crossfade animation |
| Interval Control | data-bs-interval="ms" | Controls time per slide |
🛠️ Best Practices for Bootstrap Carousels
| Tip | Why It’s Important |
|---|---|
Always set alt text | Ensures accessibility and SEO |
Use d-none d-md-block on text | Improves mobile UX and layout clarity |
| Optimize image sizes | Prevents layout shifts and improves load speed |
| Limit slides to 3–5 items | Avoids overwhelming users or causing distraction |
| Disable autoplay on forms/modals | Prevents user input interference |
📌 Summary – Recap & Next Steps
Bootstrap 5’s carousel component offers a sleek, responsive way to showcase images, marketing content, or UI features. It’s easy to extend with captions, controls, indicators, and timing customizations.
🔍 Key Takeaways:
- Use
.carousel,.carousel-item, and.carousel-innerto structure the slider - Add
.carousel-fadefor crossfade effects - Enhance UX with captions and clickable indicators
- Use
data-bs-intervalto control timing behavior
⚙️ Best suited for hero sliders, featured product showcases, testimonials, and marketing banners.
❓ FAQs – Bootstrap 5 Carousel / Slider
❓ Can I stop autoplay on Bootstrap carousel?
✅ Yes. Remove data-bs-ride="carousel" or use JavaScript to pause the slider.
❓ Can I show multiple cards in one carousel slide?
✅ Yes. Use custom layout inside each .carousel-item using .row and .col-*.
❓ Is Bootstrap carousel accessible?
✅ Partially. Use aria-* attributes and provide meaningful alt text for full accessibility.
❓ How to pause carousel on hover?
✅ Add data-bs-pause="hover" to the carousel container to pause sliding when hovered.
Share Now :
