UNPKG

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