Skip to content

Commit 6291027

Browse files
committed
Do not remove and re-add visibility classes for unchanged slides to prevents unnecessary style recalculations (This performance difference is mostly noticable when moving a slide with a mouse or touchmove because updateSlidesProgress is triggered for every keyboard-/touchevent)
1 parent f3e5ba7 commit 6291027

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/core/update/updateSlidesProgress.mjs

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
const toggleSlideClasses = (slideEl, condition, className) => {
2+
if (condition && !slideEl.classList.contains(className)) {
3+
slideEl.classList.add(className);
4+
} else if (!condition && slideEl.classList.contains(className)) {
5+
slideEl.classList.remove(className);
6+
}
7+
};
8+
19
export default function updateSlidesProgress(translate = (this && this.translate) || 0) {
210
const swiper = this;
311
const params = swiper.params;
@@ -10,11 +18,6 @@ export default function updateSlidesProgress(translate = (this && this.translate
1018
let offsetCenter = -translate;
1119
if (rtl) offsetCenter = translate;
1220

13-
// Visible Slides
14-
slides.forEach((slideEl) => {
15-
slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);
16-
});
17-
1821
swiper.visibleSlidesIndexes = [];
1922
swiper.visibleSlides = [];
2023

@@ -54,11 +57,9 @@ export default function updateSlidesProgress(translate = (this && this.translate
5457
if (isVisible) {
5558
swiper.visibleSlides.push(slide);
5659
swiper.visibleSlidesIndexes.push(i);
57-
slides[i].classList.add(params.slideVisibleClass);
58-
}
59-
if (isFullyVisible) {
60-
slides[i].classList.add(params.slideFullyVisibleClass);
6160
}
61+
toggleSlideClasses(slide, isVisible, params.slideVisibleClass);
62+
toggleSlideClasses(slide, isFullyVisible, params.slideFullyVisibleClass);
6263
slide.progress = rtl ? -slideProgress : slideProgress;
6364
slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
6465
}

0 commit comments

Comments
 (0)