Skip to content

Commit

Permalink
perf: do not remove and re-add visibility classes for unchanged slide…
Browse files Browse the repository at this point in the history
…s 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) (#7505)
  • Loading branch information
WesselKroos committed May 13, 2024
1 parent bc61bce commit 2c08227
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/core/update/updateSlidesProgress.mjs
@@ -1,3 +1,11 @@
const toggleSlideClasses = (slideEl, condition, className) => {
if (condition && !slideEl.classList.contains(className)) {
slideEl.classList.add(className);
} else if (!condition && slideEl.classList.contains(className)) {
slideEl.classList.remove(className);
}
};

export default function updateSlidesProgress(translate = (this && this.translate) || 0) {
const swiper = this;
const params = swiper.params;
Expand All @@ -10,11 +18,6 @@ export default function updateSlidesProgress(translate = (this && this.translate
let offsetCenter = -translate;
if (rtl) offsetCenter = translate;

// Visible Slides
slides.forEach((slideEl) => {
slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);
});

swiper.visibleSlidesIndexes = [];
swiper.visibleSlides = [];

Expand Down Expand Up @@ -54,11 +57,9 @@ export default function updateSlidesProgress(translate = (this && this.translate
if (isVisible) {
swiper.visibleSlides.push(slide);
swiper.visibleSlidesIndexes.push(i);
slides[i].classList.add(params.slideVisibleClass);
}
if (isFullyVisible) {
slides[i].classList.add(params.slideFullyVisibleClass);
}
toggleSlideClasses(slide, isVisible, params.slideVisibleClass);
toggleSlideClasses(slide, isFullyVisible, params.slideFullyVisibleClass);
slide.progress = rtl ? -slideProgress : slideProgress;
slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
}
Expand Down

0 comments on commit 2c08227

Please sign in to comment.