zhuguifei
2025-07-04 186d172fc06dfe44dc2a61d238356e6a7db652d5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
export default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
    const swiper = this;
    const {
        params,
        animating,
        snapGrid,
        slidesGrid,
        rtlTranslate,
        enabled
    } = swiper;
    if (!enabled) return swiper;
 
    if (params.loop) {
        if (animating && params.loopPreventsSlide) return false;
        swiper.loopFix();
 
    }
 
    const translate = rtlTranslate ? swiper.translate : -swiper.translate;
 
    function normalize(val) {
        if (val < 0) return -Math.floor(Math.abs(val));
        return Math.floor(val);
    }
 
    const normalizedTranslate = normalize(translate);
    const normalizedSnapGrid = snapGrid.map(val => normalize(val));
    let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
 
    if (typeof prevSnap === 'undefined' && params.cssMode) {
        let prevSnapIndex;
        snapGrid.forEach((snap, snapIndex) => {
            if (normalizedTranslate >= snap) {
                prevSnapIndex = snapIndex;
            }
        });
 
        if (typeof prevSnapIndex !== 'undefined') {
            prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
        }
    }
 
    let prevIndex = 0;
 
    if (typeof prevSnap !== 'undefined') {
        prevIndex = slidesGrid.indexOf(prevSnap);
        if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
 
        if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
            prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
            prevIndex = Math.max(prevIndex, 0);
        }
    }
 
    if (params.rewind && swiper.isBeginning) {
        return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);
    }
 
    setTimeout(() => {
        swiper.slideTo(prevIndex, speed, runCallbacks, internal)
    }, 30)
    return true;
}