Самый простой способ объяснить ошибку — показать вам, проверьте эту скрипку:
https://jsfiddle.net/iforwms/a13fgzdm/13/
Скольжение к слайду номер 2 и скольжение вверх и вниз по вложенным вертикальным слайдам приводит к прокрутке третьего набора слайдов, а не текущего набора слайдов.
Независимо от того, сколько наборов вертикальных слайдов вы добавляете, прокручивается всегда последний набор. Я думаю, это проблема непрозрачности, браузер выбирает div верхнего уровня (последний в коде) и прокручивает его, потому что непрозрачность установлена на 0, но элемент div все еще существует.
Изменение строки 5 javascript, удаление эффекта затухания на горизонтальном слайде устраняет проблему.
Я зарегистрировал это как ошибку на их странице GitHub, но есть идеи по исправлению?
HTML
<body>
<!-- Swiper -->
<div class="swiper-container swiper-container-h">
<div class="swiper-wrapper">
<div class="swiper-slide">Horizontal Slide 1</div>
<div class="swiper-slide">
<div class="swiper-container swiper-container-v">
<div class="swiper-wrapper">
<div class="swiper-slide">Vertical Slide 1</div>
<div class="swiper-slide">Vertical Slide 2</div>
<div class="swiper-slide">Vertical Slide 3</div>
<div class="swiper-slide">Vertical Slide 4</div>
<div class="swiper-slide">Vertical Slide 5</div>
</div>
<div class="swiper-pagination swiper-pagination-v"></div>
</div>
</div>
<div class="swiper-slide">
<div class="swiper-container swiper-container-v2">
<div class="swiper-wrapper">
<div class="swiper-slide">Vertical Slide 2-1</div>
<div class="swiper-slide">Vertical Slide 2-2</div>
<div class="swiper-slide">Vertical Slide 2-3</div>
<div class="swiper-slide">Vertical Slide 2-4</div>
<div class="swiper-slide">Vertical Slide 2-5</div>
</div>
<div class="swiper-pagination swiper-pagination-v2"></div>
</div>
</div>
</div>
<!-- Add Pagination -->
<div class="swiper-pagination swiper-pagination-h"></div>
</div>
Базовый стиль
html, body {
position: relative;
height: 100%;
margin: 0;
padding: 0;
}
.swiper-container {
width: 100%;
height: 100%;
}
.swiper-slide {
background: #eee;
}
JS
var swiperH = new Swiper('.swiper-container-h', {
pagination: '.swiper-pagination-h',
paginationClickable: true,
spaceBetween: 50,
effect: 'fade' // DELETING THIS LINE REMOVES THE ISSUE
});
var swiperV = new Swiper('.swiper-container-v', {
pagination: '.swiper-pagination-v',
paginationClickable: true,
direction: 'vertical',
spaceBetween: 50,
effect: 'fade'
});
var swiperVTwo = new Swiper('.swiper-container-v2', {
pagination: '.swiper-pagination-v2',
paginationClickable: true,
direction: 'vertical',
spaceBetween: 50,
effect: 'fade'
});