updateSlidesProgress.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. export default function updateSlidesProgress(translate = this && this.translate || 0) {
  2. const swiper = this;
  3. const params = swiper.params;
  4. const {
  5. slides,
  6. rtlTranslate: rtl,
  7. snapGrid
  8. } = swiper;
  9. if (slides.length === 0) return;
  10. if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
  11. let offsetCenter = -translate;
  12. if (rtl) offsetCenter = translate;
  13. // Visible Slides
  14. slides.forEach(slideEl => {
  15. slideEl.classList.remove(params.slideVisibleClass);
  16. });
  17. swiper.visibleSlidesIndexes = [];
  18. swiper.visibleSlides = [];
  19. let spaceBetween = params.spaceBetween;
  20. if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
  21. spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
  22. } else if (typeof spaceBetween === 'string') {
  23. spaceBetween = parseFloat(spaceBetween);
  24. }
  25. for (let i = 0; i < slides.length; i += 1) {
  26. const slide = slides[i];
  27. let slideOffset = slide.swiperSlideOffset;
  28. if (params.cssMode && params.centeredSlides) {
  29. slideOffset -= slides[0].swiperSlideOffset;
  30. }
  31. const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
  32. const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
  33. const slideBefore = -(offsetCenter - slideOffset);
  34. const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
  35. const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
  36. if (isVisible) {
  37. swiper.visibleSlides.push(slide);
  38. swiper.visibleSlidesIndexes.push(i);
  39. slides[i].classList.add(params.slideVisibleClass);
  40. }
  41. slide.progress = rtl ? -slideProgress : slideProgress;
  42. slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
  43. }
  44. }