Перестает работать 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> |
<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; } |
.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 }, }); }); |
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/
Дополнительно:
Покажите свою реализацию в песочнице https://codepen.io/
По-быстрому набросал:
snippet
В десктопной версии просто скроллим к нужному слайду, ну а в мобильной делаем полноценный слайдер как нужно...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы разобраться, почему перестал работать thumb у swiper, нужно пройти несколько шагов для диагностики проблемы.
1. Проверьте версию swiper: убедитесь, что у вас установлена последняя версия библиотеки swiper. Возможно, проблема связана с устаревшей версией, в которой были исправлены баги.
2. Проверьте наличие необходимых файлов и зависимостей: убедитесь, что у вас подключены все необходимые файлы и зависимости для работы swiper, включая стили и скрипты.
3. Проверьте наличие ошибок в консоли браузера: откройте консоль разработчика в браузере и посмотрите, есть ли какие-либо ошибки или предупреждения, связанные с работой swiper. Это может помочь определить причину проблемы.
4. Проверьте настройки swiper: убедитесь, что вы правильно настроили swiper и thumb в соответствии с документацией. Возможно, что проблема заключается в неправильных параметрах и настройках.
5. Проверьте HTML структуру: убедитесь, что структура HTML элементов для swiper и thumb правильная и соответствует требованиям библиотеки. Например, проверьте правильность классов и идентификаторов.
Если после выполнения всех этих шагов проблема с thumb у swiper не была решена, попробуйте создать минимальный пример кода, который демонстрирует проблему, и задайте вопрос на форуме или в сообществе, специализирующемся на библиотеке swiper. Приложите к вопросу все необходимые детали и код для более точного анализа проблемы.