<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;
     }
}

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/css/bootstrap.min.css

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/js/bootstrap.min.js