滑动滑块 - 带有 slideToClickedSlide 的拇指库无法正常工作
Swiper slider - thumbs gallery with slideToClickedSlide do not work properly
用于拇指库的新 Swiper API (v 4.4.1) 非常出色,除了一个小功能 - slideToClickedSlide。我希望当我在缩略图视口中到达最后一张幻灯片时,画廊将滑到下一张幻灯片。
var galleryThumbs = new Swiper('.gallery-thumbs', {
spaceBetween: 10,
slidesPerView: 4,
watchSlidesVisibility: true,
watchSlidesProgress: true,
centerInsufficientSlides: true,
slideToClickedSlide: true
});
var galleryTop = new Swiper('.gallery-top', {
spaceBetween: 10,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
thumbs: {
swiper: galleryThumbs
}
});
有人可以帮助我吗?
Link 到 Fiddle
与普通JavaScript:
https://jsfiddle.net/sa7qwz25/171/
var galleryTop = new Swiper('.gallery-top', {
...
on: {
slideChange: function () {
let activeIndex = this.activeIndex + 1;
let activeSlide = document.querySelector(`.gallery-thumbs .swiper-slide:nth-child(${activeIndex})`);
let nextSlide = document.querySelector(`.gallery-thumbs .swiper-slide:nth-child(${activeIndex + 1})`);
let prevSlide = document.querySelector(`.gallery-thumbs .swiper-slide:nth-child(${activeIndex - 1})`);
if (nextSlide && !nextSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slideNext()
} else if (prevSlide && !prevSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slidePrev()
}
}
}
});
如果需要使用多个Swiper实例:
var galleryTop = new Swiper('.gallery-top', {
...
on: {
slideChange: function () {
let activeIndex = this.activeIndex + 1;
let nextSlide = this.thumbs.swiper.$el[0].querySelector(`.swiper-slide:nth-child(${activeIndex + 1})`);
let prevSlide = this.thumbs.swiper.$el[0].querySelector(`.swiper-slide:nth-child(${activeIndex - 1})`);
if (nextSlide && !nextSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slideNext()
} else if (prevSlide && !prevSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slidePrev()
}
}
}
});
我为此创建了一个函数,你可以尝试,它更简单,你可以根据需要个性化你的 div,试试:
//here you get your div(thumb) with data set
let swiperData = document.querySelectorAll('.myThumb');
//here i create a for to get my click and show my slider with my data
for(let i = 0, lgt = swiperData.length; i < lgt; i++) {
swiperData[i].onclick = function() {
var swiperGetData = swiperData[i].getAttribute('data-slide');
mySwiper.slideTo(swiperGetData, 400);
}
}
用于拇指库的新 Swiper API (v 4.4.1) 非常出色,除了一个小功能 - slideToClickedSlide。我希望当我在缩略图视口中到达最后一张幻灯片时,画廊将滑到下一张幻灯片。
var galleryThumbs = new Swiper('.gallery-thumbs', {
spaceBetween: 10,
slidesPerView: 4,
watchSlidesVisibility: true,
watchSlidesProgress: true,
centerInsufficientSlides: true,
slideToClickedSlide: true
});
var galleryTop = new Swiper('.gallery-top', {
spaceBetween: 10,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
thumbs: {
swiper: galleryThumbs
}
});
有人可以帮助我吗? Link 到 Fiddle
与普通JavaScript:
https://jsfiddle.net/sa7qwz25/171/
var galleryTop = new Swiper('.gallery-top', {
...
on: {
slideChange: function () {
let activeIndex = this.activeIndex + 1;
let activeSlide = document.querySelector(`.gallery-thumbs .swiper-slide:nth-child(${activeIndex})`);
let nextSlide = document.querySelector(`.gallery-thumbs .swiper-slide:nth-child(${activeIndex + 1})`);
let prevSlide = document.querySelector(`.gallery-thumbs .swiper-slide:nth-child(${activeIndex - 1})`);
if (nextSlide && !nextSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slideNext()
} else if (prevSlide && !prevSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slidePrev()
}
}
}
});
如果需要使用多个Swiper实例:
var galleryTop = new Swiper('.gallery-top', {
...
on: {
slideChange: function () {
let activeIndex = this.activeIndex + 1;
let nextSlide = this.thumbs.swiper.$el[0].querySelector(`.swiper-slide:nth-child(${activeIndex + 1})`);
let prevSlide = this.thumbs.swiper.$el[0].querySelector(`.swiper-slide:nth-child(${activeIndex - 1})`);
if (nextSlide && !nextSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slideNext()
} else if (prevSlide && !prevSlide.classList.contains('swiper-slide-visible')) {
this.thumbs.swiper.slidePrev()
}
}
}
});
我为此创建了一个函数,你可以尝试,它更简单,你可以根据需要个性化你的 div,试试:
//here you get your div(thumb) with data set
let swiperData = document.querySelectorAll('.myThumb');
//here i create a for to get my click and show my slider with my data
for(let i = 0, lgt = swiperData.length; i < lgt; i++) {
swiperData[i].onclick = function() {
var swiperGetData = swiperData[i].getAttribute('data-slide');
mySwiper.slideTo(swiperGetData, 400);
}
}