UNPKG

1.81 kBJavaScriptView Raw
1import effectInit from '../../shared/effect-init.js';
2import effectTarget from '../../shared/effect-target.js';
3import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';
4export default function EffectFade({
5 swiper,
6 extendParams,
7 on
8}) {
9 extendParams({
10 fadeEffect: {
11 crossFade: false,
12 transformEl: null
13 }
14 });
15
16 const setTranslate = () => {
17 const {
18 slides
19 } = swiper;
20 const params = swiper.params.fadeEffect;
21
22 for (let i = 0; i < slides.length; i += 1) {
23 const $slideEl = swiper.slides.eq(i);
24 const offset = $slideEl[0].swiperSlideOffset;
25 let tx = -offset;
26 if (!swiper.params.virtualTranslate) tx -= swiper.translate;
27 let ty = 0;
28
29 if (!swiper.isHorizontal()) {
30 ty = tx;
31 tx = 0;
32 }
33
34 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
35 const $targetEl = effectTarget(params, $slideEl);
36 $targetEl.css({
37 opacity: slideOpacity
38 }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);
39 }
40 };
41
42 const setTransition = duration => {
43 const {
44 transformEl
45 } = swiper.params.fadeEffect;
46 const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
47 $transitionElements.transition(duration);
48 effectVirtualTransitionEnd({
49 swiper,
50 duration,
51 transformEl,
52 allSlides: true
53 });
54 };
55
56 effectInit({
57 effect: 'fade',
58 swiper,
59 on,
60 setTranslate,
61 setTransition,
62 overwriteParams: () => ({
63 slidesPerView: 1,
64 slidesPerGroup: 1,
65 watchSlidesProgress: true,
66 spaceBetween: 0,
67 virtualTranslate: !swiper.params.cssMode
68 })
69 });
70}
\No newline at end of file