I'm trying to create a custom carousel using Bootstrap 5, where each slide contains text and an image displayed side by side. Everything is working as expected, and the slides are positioned correctly. However, Slide 3 always appears on top, even when it's not active.
I'm looking for a way to fix this issue (without using JavaScript).
Here's the code I'm working with (with jQuery 4.0+ and Bootstrap 5 compatibility, as this is for a Drupal 11 website):
.carousel-item {
display: flex;
justify-content: center;
align-items: center;
background: #f8f9fa;
}
.carousel-item .item {
display: flex;
width: 100%;
}
.carousel-item .text,
.carousel-item .image {
padding: 15px;
}
.carousel-item .text {
flex: 1;
background-color: rgba(0, 0, 0, 0.5);
color: white;
padding: 20px;
}
.carousel-item .image img {
width: 100%;
height: auto;
object-fit: cover;
}
.carousel-caption {
display: none;
}
@media (max-width: 768px) {
.carousel-item .item {
flex-direction: column;
}
.carousel-item .image img {
max-height: 300px;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/[email protected]/dist/css/bootstrap.min.css">
<script src=".0.0.min.js"></script>
</head>
<body>
<div class="container mt-4">
<div id="carouselExample" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<!-- Slide 1 -->
<div class="carousel-item active">
<div class="item">
<div class="text col-md-6">
<p>Slide 1: Lorem ipsum dolor sit amet consectetur, adipisicing elit. Perspiciatis a modi repellat eaque voluptatibus repellendus veniam quia! Et recusandae quam inventore atque sapiente eius minus quaerat, perferendis, magnam ex fugit.</p>
</div>
<div class="image col-md-6">
<img src=".png" alt="">
</div>
</div>
</div>
<!-- Slide 2 -->
<div class="carousel-item">
<div class="item">
<div class="text col-md-6">
<p>Slide 2: Description for Slide 2 goes here...</p>
</div>
<div class="image col-md-6">
<img src=".png" alt="Slide 2">
</div>
</div>
</div>
<!-- Slide 3 -->
<div class="carousel-item">
<div class="item">
<div class="text col-md-6">
<p>Slide 3: Description for Slide 3 goes here...</p>
</div>
<div class="image col-md-6">
<img src=".png" alt="Slide 3">
</div>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExample" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExample" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExample" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
</div>
</div>
<footer class="bg-dark text-white text-center py-3 mt-4">
<p>© 2025 My Site. All rights reserved.</p>
</footer>
<script src="/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>