updateAutoHeight.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. export default function updateAutoHeight(speed) {
  2. const swiper = this;
  3. const activeSlides = [];
  4. const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
  5. let newHeight = 0;
  6. let i;
  7. if (typeof speed === 'number') {
  8. swiper.setTransition(speed);
  9. } else if (speed === true) {
  10. swiper.setTransition(swiper.params.speed);
  11. }
  12. const getSlideByIndex = index => {
  13. if (isVirtual) {
  14. return swiper.slides[swiper.getSlideIndexByData(index)];
  15. }
  16. return swiper.slides[index];
  17. };
  18. // Find slides currently in view
  19. if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
  20. if (swiper.params.centeredSlides) {
  21. (swiper.visibleSlides || []).forEach(slide => {
  22. activeSlides.push(slide);
  23. });
  24. } else {
  25. for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
  26. const index = swiper.activeIndex + i;
  27. if (index > swiper.slides.length && !isVirtual) break;
  28. activeSlides.push(getSlideByIndex(index));
  29. }
  30. }
  31. } else {
  32. activeSlides.push(getSlideByIndex(swiper.activeIndex));
  33. }
  34. // Find new height from highest slide in view
  35. for (i = 0; i < activeSlides.length; i += 1) {
  36. if (typeof activeSlides[i] !== 'undefined') {
  37. const height = activeSlides[i].offsetHeight;
  38. newHeight = height > newHeight ? height : newHeight;
  39. }
  40. }
  41. // Update Height
  42. if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
  43. }