diff --git a/src/core/slide/slideTo.js b/src/core/slide/slideTo.js index 5c14aa795..c6caac01f 100644 --- a/src/core/slide/slideTo.js +++ b/src/core/slide/slideTo.js @@ -36,7 +36,13 @@ export default function slideTo( const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; - + const slidesPerView = swiper.passedParams.slidesPerView; + if (swiper.params.loop && slidesPerView > 1 && snapGrid.length < swiper.slides.length) { + while (swiper.slides.length > snapGrid.length) { + snapGrid.push(snapGrid[snapGrid.length - 1] + swiper.size / slidesPerView); + } + snapIndex = snapGrid.length; + } const translate = -snapGrid[snapIndex]; // Normalize slideIndex if (params.normalizeSlideIndex) { diff --git a/src/core/slide/slideToLoop.js b/src/core/slide/slideToLoop.js index 028b12413..48fba0b97 100644 --- a/src/core/slide/slideToLoop.js +++ b/src/core/slide/slideToLoop.js @@ -13,6 +13,7 @@ export default function slideToLoop( } const swiper = this; + const slidesPerView = swiper.passedParams.slidesPerView; let newIndex = index; if (swiper.params.loop) { if (swiper.virtual && swiper.params.virtual.enabled) { @@ -24,6 +25,9 @@ export default function slideToLoop( (slideEl) => slideEl.getAttribute('data-swiper-slide-index') * 1 === newIndex, )[0], ); + if (slidesPerView > 1 && swiper.slides.length < newIndex + slidesPerView) { + setTimeout(() => swiper.loopFix({ direction: 'next' }), speed); + } } } diff --git a/src/core/update/updateSlides.js b/src/core/update/updateSlides.js index 079c549de..1ff6c4e05 100644 --- a/src/core/update/updateSlides.js +++ b/src/core/update/updateSlides.js @@ -67,12 +67,12 @@ export default function updateSlides() { // reset margins slides.forEach((slideEl) => { if (rtl) { - slideEl.style.marginLeft = ''; + slideEl.style.marginLeft = '0'; } else { - slideEl.style.marginRight = ''; + slideEl.style.marginRight = '0'; } - slideEl.style.marginBottom = ''; - slideEl.style.marginTop = ''; + slideEl.style.marginBottom = '0'; + slideEl.style.marginTop = '0'; }); // reset cssMode offsets