UNPKG

@zebra-ui/swiper

Version:

专为多端设计的高性能swiper轮播组件库,支持多种复杂的 3D swiper轮播效果。

80 lines (66 loc) 2.04 kB
import type { OnResize } from '../../../types/components/core/events/on-resize' import type { SwiperInterface } from '../../../types/swiper-class' const onResize: OnResize = function (this: SwiperInterface) { const swiper = this as SwiperInterface & { autoplay?: { running?: boolean paused?: boolean resizeTimeout?: number resume: () => void } } const { params, el } = swiper if (el && (el as HTMLElement).offsetWidth === 0) return // Breakpoints if (params.breakpoints) { swiper.setBreakpoint() } // Save locks const { allowSlideNext, allowSlidePrev, snapGrid } = swiper const isVirtual = swiper.virtual && typeof swiper.params.virtual === 'object' && swiper.params.virtual.enabled // Disable locks on resize swiper.allowSlideNext = true swiper.allowSlidePrev = true swiper.updateSize() swiper.updateSlides() swiper.updateSlidesClasses() const isVirtualLoop = isVirtual && params.loop if ( (params.slidesPerView === 'auto' || (params.slidesPerView && params.slidesPerView > 1)) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop ) { swiper.slideTo(swiper.slides.length - 1, 0, false, true) } else { if (swiper.params.loop && !isVirtual) { swiper.slideToLoop(swiper.realIndex, 0, false, true) } else { swiper.slideTo(swiper.activeIndex, 0, false, true) } } if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { clearTimeout(swiper.autoplay.resizeTimeout) swiper.autoplay.resizeTimeout = setTimeout(() => { if ( swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused ) { swiper.autoplay.resume() } }, 500) } // Return locks after resize swiper.allowSlidePrev = allowSlidePrev swiper.allowSlideNext = allowSlideNext if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { swiper.checkOverflow() } } export default onResize