Skip to content

Commit 446af7e

Browse files
committed
fix(core): fix cases when spaceBetween set in %
fixes #6647
1 parent 5a5ebb4 commit 446af7e

File tree

3 files changed

+32
-11
lines changed

3 files changed

+32
-11
lines changed

src/core/update/updateSlides.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ export default function updateSlides() {
6060
}
6161
if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
6262
spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
63+
} else if (typeof spaceBetween === 'string') {
64+
spaceBetween = parseFloat(spaceBetween);
6365
}
6466

6567
swiper.virtualSize = -spaceBetween;
@@ -194,10 +196,10 @@ export default function updateSlides() {
194196
swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
195197

196198
if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
197-
wrapperEl.style.width = `${swiper.virtualSize + params.spaceBetween}px`;
199+
wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
198200
}
199201
if (params.setWrapperSize) {
200-
wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + params.spaceBetween}px`;
202+
wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
201203
}
202204

203205
if (gridEnabled) {
@@ -244,7 +246,7 @@ export default function updateSlides() {
244246
}
245247
if (snapGrid.length === 0) snapGrid = [0];
246248

247-
if (params.spaceBetween !== 0) {
249+
if (spaceBetween !== 0) {
248250
const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
249251
slides
250252
.filter((_, slideIndex) => {
@@ -262,9 +264,9 @@ export default function updateSlides() {
262264
if (params.centeredSlides && params.centeredSlidesBounds) {
263265
let allSlidesSize = 0;
264266
slidesSizesGrid.forEach((slideSizeValue) => {
265-
allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
267+
allSlidesSize += slideSizeValue + (spaceBetween || 0);
266268
});
267-
allSlidesSize -= params.spaceBetween;
269+
allSlidesSize -= spaceBetween;
268270
const maxSnap = allSlidesSize - swiperSize;
269271
snapGrid = snapGrid.map((snap) => {
270272
if (snap < 0) return -offsetBefore;
@@ -276,9 +278,9 @@ export default function updateSlides() {
276278
if (params.centerInsufficientSlides) {
277279
let allSlidesSize = 0;
278280
slidesSizesGrid.forEach((slideSizeValue) => {
279-
allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
281+
allSlidesSize += slideSizeValue + (spaceBetween || 0);
280282
});
281-
allSlidesSize -= params.spaceBetween;
283+
allSlidesSize -= spaceBetween;
282284
if (allSlidesSize < swiperSize) {
283285
const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
284286
snapGrid.forEach((snap, snapIndex) => {

src/core/update/updateSlidesProgress.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ export default function updateSlidesProgress(translate = (this && this.translate
1818
swiper.visibleSlidesIndexes = [];
1919
swiper.visibleSlides = [];
2020

21+
let spaceBetween = params.spaceBetween;
22+
if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
23+
spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiper.size;
24+
} else if (typeof spaceBetween === 'string') {
25+
spaceBetween = parseFloat(spaceBetween);
26+
}
27+
2128
for (let i = 0; i < slides.length; i += 1) {
2229
const slide = slides[i];
2330
let slideOffset = slide.swiperSlideOffset;
@@ -27,13 +34,13 @@ export default function updateSlidesProgress(translate = (this && this.translate
2734

2835
const slideProgress =
2936
(offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /
30-
(slide.swiperSlideSize + params.spaceBetween);
37+
(slide.swiperSlideSize + spaceBetween);
3138
const originalSlideProgress =
3239
(offsetCenter -
3340
snapGrid[0] +
3441
(params.centeredSlides ? swiper.minTranslate() : 0) -
3542
slideOffset) /
36-
(slide.swiperSlideSize + params.spaceBetween);
43+
(slide.swiperSlideSize + spaceBetween);
3744
const slideBefore = -(offsetCenter - slideOffset);
3845
const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
3946
const isVisible =

src/modules/grid/grid.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ export default function Grid({ swiper, extendParams }) {
1010
let slidesPerRow;
1111
let numFullColumns;
1212

13+
const getSpaceBetween = () => {
14+
let spaceBetween = swiper.params.spaceBetween;
15+
if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
16+
spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiper.size;
17+
} else if (typeof spaceBetween === 'string') {
18+
spaceBetween = parseFloat(spaceBetween);
19+
}
20+
return spaceBetween;
21+
};
22+
1323
const initSlides = (slidesLength) => {
1424
const { slidesPerView } = swiper.params;
1525
const { rows, fill } = swiper.params.grid;
@@ -26,7 +36,8 @@ export default function Grid({ swiper, extendParams }) {
2636
};
2737

2838
const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {
29-
const { slidesPerGroup, spaceBetween } = swiper.params;
39+
const { slidesPerGroup } = swiper.params;
40+
const spaceBetween = getSpaceBetween();
3041
const { rows, fill } = swiper.params.grid;
3142
// Set slides order
3243
let newSlideOrderIndex;
@@ -66,7 +77,8 @@ export default function Grid({ swiper, extendParams }) {
6677
};
6778

6879
const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {
69-
const { spaceBetween, centeredSlides, roundLengths } = swiper.params;
80+
const { centeredSlides, roundLengths } = swiper.params;
81+
const spaceBetween = getSpaceBetween();
7082
const { rows } = swiper.params.grid;
7183
swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
7284
swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;

0 commit comments

Comments
 (0)