<div class="container">
  <div class="swiper-container-wrapper swiper-container-wrapper--timeline">
    <!-- Timeline -->
    <ul class="swiper-pagination-custom">
      <li class='swiper-pagination-switch first active'><span class='switch-title'>1911</span></li>
      <li class='swiper-pagination-switch'><span class='switch-title'>1970</span></li>
      <li class='swiper-pagination-switch'><span class='switch-title'>2023</span></li>
      <li class='swiper-pagination-switch last'><span class='switch-title'>3000</span></li>
    </ul>
    <!-- Progressbar -->
    <div class="swiper-pagination swiper-pagination-progressbar swiper-pagination-horizontal"></div>
    <!-- Swiper -->
    <div class="swiper swiper-container swiper-container--timeline">
      <div class="swiper-wrapper">
        <!-- Slides -->
        <div class="swiper-slide"><span class="title">Swiper Timeline Progressbar</span></div>
        <div class="swiper-slide"><span class="title">Title 2</span></div>
        <div class="swiper-slide"><span class="title">Title 3</span></div>
        <div class="swiper-slide"><span class="title">Title 4</span></div>
      </div>
    </div>
  </div>
</div>
$primary-color: #000;
$secondary-color: #888;

html,
body {
  position: relative;
  height: 100%;
  overflow: hidden;
  background: #eee;
}

body {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 16px;
  margin: 0;
  padding: 0;
}

.swiper-container-wrapper {
  &--timeline {
    .swiper-slide {
      display: flex;
      background: #fff;
      min-height: 300px;
      align-items: center;
      justify-content: center;
      border-radius: 10px;
      .container {
        padding: 0;
        width: 100%;
      }
      .title{
        font-size: 18px;
        opacity: 0;
        transition: 0.5s ease 0.5s;
      }
      &-active{
        .title{
          opacity: 1;
        }
      }
    }
    .swiper-pagination-progressbar {
      position: relative;
      margin-bottom: 70px;
      background-color: transparent;
      height: 4px;
      border-bottom: 1px solid $secondary-color;
      width: 75%;
      &-fill {
        background-color: $primary-color;
        height: 3px;
        top: 2px;
      }
      &:before {
        position: absolute;
        top: 2px;
        left: -100%;
        width: 100%;
        height: 3px;
        background-color: $primary-color;
        content: "";
      }
      &:after {
        position: absolute;
        top: 3px;
        right: -100%;
        width: 100%;
        height: 1px;
        background-color: $secondary-color;
        content: "";
      }
    }
    .swiper-pagination-custom {
      position: relative;
      list-style: none;
      margin: 1rem 0;
      padding: 0;
      display: flex;
      line-height: 1.66;
      bottom: 0;
      z-index: 11;
      width: 75%;
      display: flex;
      .swiper-pagination-switch {
        position: relative;
        width: 100%;
        height: 30px;
        line-height: 30px;
        display: block;
        .switch-title {
          position: absolute;
          font-weight: 400;
          right: 0;
          transform: translateX(50%);
          transition: 0.2s all ease-in-out;
          transition-delay: 0s;
          cursor: pointer;
          z-index: 1;
          &:after {
            position: absolute;
            top: calc(100% + 19px);
            right: 50%;
            transform: translateX(50%) translateY(-50%);
            width: 12px;
            height: 12px;
            background: $primary-color;
            border-radius: 2rem;
            content: "";
            transition: 0.2s all ease-in-out;
            transition-delay: 0s;
            z-index: 1;
          }
        }
        &.active {
          .switch-title {
            font-weight: 400;
            transition-delay: 0.4s;
            &:after {
              background: $primary-color;
              width: 25px;
              height: 25px;
              transition-delay: 0.4s;
            }
          }
          ~ .swiper-pagination-switch {
            .switch-title {
              color: $secondary-color;
              font-weight: 16px;
              &:after {
                background: $secondary-color;
              }
            }
          }
        }
      }
    }
  }
}
View Compiled
$(document).ready(function () {
  var mySwiper = new Swiper(".swiper", {
    autoHeight: true,
    autoplay: {
      delay: 5000,
      disableOnInteraction: false
    },
    speed: 500,
    direction: "horizontal",
    navigation: {
      nextEl: ".swiper-button-next",
      prevEl: ".swiper-button-prev"
    },
    pagination: {
      el: ".swiper-pagination",
      type: "progressbar"
    },
    loop: false,
    effect: "slide",
    spaceBetween: 30,
    on: {
      init: function () {
        $(".swiper-pagination-custom .swiper-pagination-switch").removeClass("active");
        $(".swiper-pagination-custom .swiper-pagination-switch").eq(0).addClass("active");
      },
      slideChangeTransitionStart: function () {
        $(".swiper-pagination-custom .swiper-pagination-switch").removeClass("active");
        $(".swiper-pagination-custom .swiper-pagination-switch").eq(mySwiper.realIndex).addClass("active");
      }
    }
  });
  $(".swiper-pagination-custom .swiper-pagination-switch").click(function () {
    mySwiper.slideTo($(this).index());
    $(".swiper-pagination-custom .swiper-pagination-switch").removeClass("active");
    $(this).addClass("active");
  });
});

External CSS

  1. https://unpkg.com/swiper/swiper-bundle.min.css
  2. https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/Swiper/6.8.4/swiper-bundle.min.js