<div class="shadow bg-success text-white p-3 text-center mb-4">
<span class="h3 mb-0">Add animation to bootstrap carousel elements</span>
</div>
<div class="container">
<div class="row">
<div class="col-lg-8 m-auto">
<div id="carousel-example" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carousel-example" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carousel-example" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carousel-example" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="https://picsum.photos/id/1042/768/300" class="d-block w-100" />
<div class="carousel-caption d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</div>
</div>
<div class="carousel-item">
<img src="https://picsum.photos/id/1002/768/300" class="d-block w-100" />
<div class="carousel-caption d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</p>
</div>
</div>
<div class="carousel-item">
<img src="https://picsum.photos/id/1019/768/300" class="d-block w-100" />
<div class="carousel-caption d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-example" 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="#carousel-example" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
</div>
</div>
</div>
.carousel-item h5 {
transform: translateY(-40px);
opacity: 0;
}
.carousel-item p {
transform: translateY(40px);
opacity: 0;
}
.carousel-item.active h5 {
animation: slideup 0.5s normal forwards;
animation-delay: 0s;
}
.carousel-item.active p {
animation: slidedown 0.5s normal forwards;
animation-delay: 0.5s;
}
@keyframes slideup {
0% {
transform: translateY(-40px);
opacity: 0;
}
100% {
transform: translate(0);
opacity: 1;
}
}
@keyframes slidedown {
0% {
transform: translateY(40px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}