Задать вопрос
@NasekinLovell

Перестает работать thumb у swiper?

Есть два слайдера. Один слайдер имеет особенность: отображены все слайды разом во всю высоту и при обычном скролле страницы слайды не уходят под полотно страницы, как было бы со свойством overflow hidden. А просто отображаются единой группой.

Второй сладйер - это thumb. Проблема заключается в том, что если сделать высоту

.swiper {
width: 100%;
height: 100vh;
}

то thumb работает, но тогда теряется особенность слайдера. Они перестают отображаться во всю высоту, а так нельзя. Как сделать так, чтобы как на пример https://brandshop.ru/goods/452209/np0a4hvg176/
Вот верстка
<div thumbsSlider="" class="swiper productCardThumb">
                  <div class="swiper-wrapper">
                    <div class="swiper-slide">
                      <div class="block-product__thumb">
                        <img alt="" src="../../assets/img/unicorn.jpg">
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__thumb">
                        <img alt="" src="../../assets/img/unicorn.jpg">
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__thumb">
                        <img alt="" src="../../assets/img/unicorn.jpg">
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__thumb">
                        <img alt="" src="../../assets/img/unicorn.jpg">
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__thumb">
                        <img alt="" src="../../assets/img/unicorn.jpg">
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__thumb">
                        <img alt="" src="../../assets/img/unicorn.jpg">
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__thumb">
                        <img alt="" src="../../assets/img/unicorn.jpg">
                      </div>
                    </div>
                  </div>
                </div>
                <div class="swiper productCard">
                  <div class="swiper-wrapper">
                    <div class="swiper-slide">
                      <div class="block-product__slide">
                        <div class="swiper-zoom-container">
                          <img alt="" src="../../assets/img/unicorn.jpg">
                        </div>
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__slide">
                        <div class="swiper-zoom-container">
                          <img alt="" src="../../assets/img/unicorn.jpg">
                        </div>
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__slide">
                        <div class="swiper-zoom-container">
                          <img alt="" src="../../assets/img/unicorn.jpg">
                        </div>
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__slide">
                        <div class="swiper-zoom-container">
                          <img alt="" src="../../assets/img/unicorn.jpg">
                        </div>
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__slide">
                        <div class="swiper-zoom-container">
                          <img alt="" src="../../assets/img/unicorn.jpg">
                        </div>
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__slide">
                        <div class="swiper-zoom-container">
                          <img alt="" src="../../assets/img/unicorn.jpg">
                        </div>
                      </div>
                    </div>
                    <div class="swiper-slide">
                      <div class="block-product__slide">
                        <div class="swiper-zoom-container">
                          <img alt="" src="../../assets/img/unicorn.jpg">
                        </div>
                      </div>
                    </div>
                  </div>
                  <div class="swiper-pagination"></div>
                </div>


Вот стили
.block-product {
  padding: 50px;

  &__content {
    display: flex;
    width: 100%;
    justify-content: space-between;
  }

  &__img {
    width: 75%;
    display: flex;
    justify-content: space-between;
  }

  &__info {
    width: 20%;
    background-color: blue;
    height: 400px;
    position: sticky;
    top: 100px;
  }

  &__thumbs {}

  &__slider {}

  &__slide {
    cursor: zoom-in;
    overflow: hidden;

    img {
      height: 700px !important;
    }
  }
}

.swiper {
  width: 100%;
  height: 100%;
}

.swiper-slide {
  text-align: center;
  font-size: 18px;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-shrink: 1;
}

.swiper-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

// .productCard .swiper-slide {
//   width: auto;
//   height: auto !important;
// }

.productCardThumb {
  position: sticky;
  top: 100px;
  width: 75px;
  height: max-content;
}

.productCardThumb .swiper-slide-thumb-active {
  filter: brightness(0.9) !important;
  transition: 0.2s;

  img {
    border-radius: 10px;
  }
}

.productCardThumb .swiper-slide {
  filter: brightness(1);
  width: 65px;
  height: auto !important;
}

.productCardThumb .swiper-slide:last-child {
  margin-bottom: 0 !important;
}


Вот js
require('../../assets/scss/main.scss');
require('./page.scss');
import Swiper, { Autoplay, FreeMode, Mousewheel, Zoom, Thumbs } from 'swiper';

Swiper.use([Autoplay, FreeMode, Mousewheel, Zoom, Thumbs]);

document.addEventListener('DOMContentLoaded', () => {
    const productCardThumb = new Swiper('.productCardThumb', {
        slidesPerView: 'auto',
        direction: 'vertical',
        spaceBetween: 10,
        freeMode: {
            enabled: true
        },
        watchSlidesVisibility: true,
        watchSlidesProgress: true,
    });

    const productCard = new Swiper('.productCard', {
        zoom: true,
        slidesPerView: 'auto',
        direction: 'vertical',
        spaceBetween: 30,
        thumbs: {
            swiper: productCardThumb,
        },
        freeMode: true,
        mousewheel: {
            forceToAxis: true
        },
    });
});


вот пример как должно быть https://brandshop.ru/goods/452209/np0a4hvg176/
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
Get-Web
@Get-Web Куратор тега CSS
Front-End Developer
По-быстрому набросал:

В десктопной версии просто скроллим к нужному слайду, ну а в мобильной делаем полноценный слайдер как нужно...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы