Как на страницу вставить одинаковые swiper галереи?

Как вставить много одинаковых swiper галерей на одну страницу, не конфликтуя друг с другом?

Пример codepen.io/qamos/pen/ExEYwYm

если на странице таких слайдеров 50 штук, одинаковых.. каждый отдельно вызывать в скриптах не вариант


Ответы (1 шт):

Автор решения: soledar10

Пример

const wrapper = document.querySelectorAll(".wrapper");
wrapper.forEach((item) => {
  const top = item.querySelector(".gallery-top");
  const thumbs = item.querySelector(".gallery-thumbs");

  const galleryTop = new Swiper(top, {
    spaceBetween: 10,
    navigation: {
      nextEl: ".swiper-button-next",
      prevEl: ".swiper-button-prev"
    },
    loop: true,
    loopedSlides: 4
  });

  const galleryThumbs = new Swiper(thumbs, {
    spaceBetween: 10,
    centeredSlides: true,
    slidesPerView: "auto",
    touchRatio: 0.2,
    slideToClickedSlide: true,
    loop: true,
    loopedSlides: 4
  });

  galleryTop.controller.control = galleryThumbs;
  galleryThumbs.controller.control = galleryTop;

});
body {
  background: #eee;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 14px;
  color: #000;
  margin: 0;
  padding: 0;
}

.wrapper {
  height: 200px;
  margin-bottom: 2rem;
  border: 2px solid #00f;
}

.swiper-container {
  width: 100%;
  height: 300px;
  margin: 20px auto;
}

.swiper-slide-container {
  text-align: center;
  font-size: 18px;
  background: #fff;
  height: 100%;
  max-width: 600px;
  margin: auto;
  /* Center slide text vertically */
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

.gallery-top {
  height: 80%;
  width: 100%;
}

.gallery-thumbs {
  height: 20%;
  box-sizing: border-box;
  padding: 10px 0;
}

.gallery-thumbs .swiper-slide {
  width: 20%;
  height: 100%;
  opacity: 0.4;
}

.gallery-thumbs .swiper-slide-active {
  opacity: 1;
}
<script src="//cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/js/swiper.min.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/css/swiper.min.css" rel="stylesheet" />

<body>
  <div class="wrapper">
    <div class="swiper-container gallery-top">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 1</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 2</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 3</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 4</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 5</div>
        </div>
      </div>
      <!-- Add Arrows -->
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
    </div>
    <div class="swiper-container gallery-thumbs">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 1</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 2</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 3</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 4</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 5</div>
        </div>
      </div>
    </div>
  </div>

  <div class="wrapper">
    <div class="swiper-container gallery-top">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 1</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 2</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 3</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 4</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 5</div>
        </div>
      </div>
      <!-- Add Arrows -->
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
    </div>
    <div class="swiper-container gallery-thumbs">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 1</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 2</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 3</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 4</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 5</div>
        </div>
      </div>
    </div>
  </div>


  <div class="wrapper">
    <div class="swiper-container gallery-top">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 1</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 2</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 3</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 4</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 5</div>
        </div>
      </div>
      <!-- Add Arrows -->
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
    </div>
    <div class="swiper-container gallery-thumbs">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 1</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 2</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 3</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 4</div>
        </div>
        <div class="swiper-slide">
          <div class="swiper-slide-container">Slide 5</div>
        </div>
      </div>
    </div>
  </div>
</body>

→ Ссылка