<div class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide">Slide 1</div>
      <div class="swiper-slide">Slide 2</div>
      <div class="swiper-slide">Slide 3</div>
      <div class="swiper-slide">Slide 4</div>
      <div class="swiper-slide">Slide 5</div>
      <div class="swiper-slide">Slide 6</div>
    </div>
    <!-- Add Pagination -->
    <div class="swiper-pagination"></div>
  </div>
body {
  background: #eee;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 14px;
  color: #000;
  margin: 0;
  padding: 0;
  height: 100vh;
  display: flex;
  flex-direction: column;
}

.swiper-container {
  width: 90vmin;
  height: 45vmin;
  margin: auto;
}

.swiper-slide {
  text-align: center;
  font-size: 18px;
  background: #fff;

  display: flex;
  justify-content: center;
  align-items: center;
}

.swiper-slide:nth-child(even) {
  background: #ccc;
}

.swiper-pagination-bullet {
  opacity: 1;
}

.bullet-circle {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 50%;
  transform-origin: 0 0;
  transform: rotate(calc(var(--progress) * -180deg - 90deg + 36deg * var(--index)));
  transition: transform 300ms linear;
}

.bullet-ava {
  position: absolute;
  width: 30px;
  height: 30px;
  top: -15px;
  right: 30px;
  line-height: 30px;
  transform: rotate(calc((var(--progress) * -180deg - 90deg + 36deg * var(--index)) * -1));
  transition: transform 300ms linear;
  background-color: #f00;
  color: #fff;
  border-radius: 50%;
}
const swiperEl = document.querySelector(".swiper-container");

const swiper = new Swiper(swiperEl, {
  pagination: {
    el: ".swiper-pagination",
    clickable: true,
    renderBullet(index, className) {
      return `
        <div class="${className}">
          <div class="bullet-dot"></div>
          <div class="bullet-circle" style="--index: ${index}">
            <div class="bullet-ava">${index + 1}</div>
          </div>
        </div>`;
    }
  },

  on: {
    progress(self, p) {
      swiperEl.style.setProperty('--progress', p);
    }
  }
});

External CSS

  1. https://unpkg.com/swiper/swiper-bundle.min.css

External JavaScript

  1. https://unpkg.com/swiper/swiper-bundle.min.js