ArtSemkin

Rubenz HTML5 Template Fade In/Out "View Project" in sliders

Jul 3rd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var SliderHalfScreen = function ($slider) {
  2.  
  3.     if (!$slider.length) {
  4.         return;
  5.     }
  6.  
  7.     var
  8.         $heading = $slider.find('h2'),
  9.         $description = $slider.find('p'),
  10.         //////////////////////////
  11.         $link = $slider.find('.slider-halfscreen__wrapper-link'),
  12.         //------------------------
  13.         tl = new TimelineMax(),
  14.         $sliderImg = $slider.find('.js-slider-halfscreen__images'),
  15.         $sliderContent = $slider.find('.js-slider-halfscreen__content'),
  16.         overlapFactor = $sliderImg.data('overlap-factor') || 0;
  17.  
  18.     createSliders();
  19.     hoverLinks();
  20.  
  21.     function createSliders() {
  22.  
  23.         var sliderImg = new Swiper($sliderImg, {
  24.             autoplay: {
  25.                 enabled: $sliderImg.data('autoplay-enabled') || false,
  26.                 delay: $sliderImg.data('autoplay-delay') || 6000,
  27.                 disableOnInteraction: true
  28.             },
  29.             direction: 'vertical',
  30.             preloadImages: true,
  31.             lazy: {
  32.                 loadPrevNext: true,
  33.                 loadOnTransitionStart: true
  34.             },
  35.             speed: $sliderImg.data('speed') || 1200,
  36.             simulateTouch: false,
  37.             watchSlidesProgress: true,
  38.             on: {
  39.                 progress: function () {
  40.                     var swiper = this;
  41.                     for (var i = 0; i < swiper.slides.length; i++) {
  42.  
  43.                         var slideProgress = swiper.slides[i].progress,
  44.                             innerOffset = swiper.width * overlapFactor,
  45.                             innerTranslate = slideProgress * innerOffset;
  46.  
  47.                         try {
  48.                             TweenMax.set(swiper.slides[i].querySelector('.slider-halfscreen__bg'), {
  49.                                 y: innerTranslate + 'px',
  50.                                 transition: swiper.params.speed + 'ms',
  51.                                 rotationZ: 0.01,
  52.                                 force3D: true
  53.                             });
  54.                         } catch (error) {
  55.  
  56.                         }
  57.  
  58.                     }
  59.                 },
  60.                 touchStart: function () {
  61.                     var swiper = this;
  62.                     for (var i = 0; i < swiper.slides.length; i++) {
  63.                         try {
  64.                             TweenMax.set(swiper.slides[i].querySelector('.slider-halfscreen__bg'), {
  65.                                 transition: '',
  66.                                 rotationZ: 0.01,
  67.                                 force3D: true
  68.                             });
  69.                         } catch (error) {
  70.  
  71.                         }
  72.  
  73.                     }
  74.                 },
  75.             }
  76.         });
  77.  
  78.         var sliderContent = new Swiper($sliderContent, {
  79.             simulateTouch: false,
  80.             effect: 'fade',
  81.             fadeEffect: {
  82.                 crossFade: true
  83.             },
  84.             mousewheel: {
  85.                 eventsTarged: '.page-wrapper',
  86.                 releaseOnEdges: true,
  87.             },
  88.             navigation: {
  89.                 nextEl: '.js-slider-halfscreen__next',
  90.                 prevEl: '.js-slider-halfscreen__prev',
  91.             },
  92.             speed: $sliderImg.data('speed') || 1200,
  93.             allowTouchMove: false,
  94.             breakpoints: {
  95.                 992: {
  96.                     autoHeight: true
  97.                 }
  98.             }
  99.         });
  100.  
  101.         sliderContent
  102.             .on('slideNextTransitionStart', function () {
  103.  
  104.                 var
  105.                     $activeSlide = $(sliderContent.slides[sliderContent.activeIndex]),
  106.                     $activeHeading = $activeSlide.find($heading),
  107.                     //////////////////////////
  108.                     $activeLink = $activeSlide.find($link),
  109.                     //------------------------
  110.                     $activeDescription = $activeSlide.find($description);
  111.  
  112.                 tl.clear();
  113.  
  114.                 $heading.each(function () {
  115.                     tl
  116.                         .add(hideWords($(this), 0.3, 0.02, '50px', true), '0')
  117.                         .add(hideWords($(this), '0', '0', '-50px'));
  118.                 });
  119.  
  120.                 $description.each(function () {
  121.                     tl.add(hideLines($(this), 0.6, 0.01, '100%', true), '0');
  122.                 });
  123.  
  124.                 //////////////////////////
  125.                 $link.each(function () {
  126.                     tl.to($(this), 0.6, {
  127.                         y: '30px',
  128.                         autoAlpha: 0
  129.                     }, '0');
  130.                 });
  131.                 //------------------------
  132.  
  133.                 tl
  134.                     .add(animateWords($activeHeading, 1.2, 0.02, true))
  135.                     .add(animateLines($activeDescription, 1.2, 0.01, true), '-=1.2');
  136.  
  137.                 //////////////////////////
  138.                 tl.to($activeLink, 0.6, {
  139.                     y: '0px',
  140.                     autoAlpha: 1
  141.                 }, '-=1.2');
  142.                 //------------------------
  143.  
  144.             })
  145.             .on('slidePrevTransitionStart', function () {
  146.  
  147.                 var
  148.                     $activeSlide = $(sliderContent.slides[sliderContent.activeIndex]),
  149.                     $activeHeading = $activeSlide.find($heading),
  150.                     //////////////////////////
  151.                     $activeLink = $activeSlide.find($link),
  152.                     //------------------------
  153.                     $activeDescription = $activeSlide.find($description);
  154.  
  155.                 tl.clear();
  156.  
  157.                 $heading.each(function () {
  158.                     tl
  159.                         .add(hideWords($(this), 0.3, 0.02, '-50px', false), '0')
  160.                         .add(hideWords($(this), '0', '0', '50px'));
  161.                 });
  162.  
  163.                 $description.each(function () {
  164.                     tl.add(hideLines($(this), 0.6, 0.01, '100%', true), '0');
  165.                 });
  166.  
  167.                 //////////////////////////
  168.                 $link.each(function () {
  169.                     tl.to($(this), 0.6, {
  170.                         y: '30px',
  171.                         autoAlpha: 0
  172.                     }, '0');
  173.                 });
  174.                 //------------------------
  175.  
  176.                 tl
  177.                     .add(animateWords($activeHeading, 1.2, 0.02, false))
  178.                     .add(animateLines($activeDescription, 1.2, 0.01), '-=1.2');
  179.  
  180.                 //////////////////////////
  181.                 tl.to($activeLink, 0.6, {
  182.                     y: '0px',
  183.                     autoAlpha: 1
  184.                 }, '-=1.2');
  185.                 //------------------------
  186.  
  187.             });
  188.  
  189.         sliderImg.controller.control = sliderContent;
  190.         sliderContent.controller.control = sliderImg;
  191.  
  192.     }
  193.  
  194.     function hoverLinks() {
  195.  
  196.         $document
  197.             .on('mouseenter touchstart', '.slider-halfscreen__link', function () {
  198.  
  199.                 var $targetBackground = $sliderImg.find('.swiper-slide-active .slider-halfscreen__images-slide-inner'),
  200.                     $linkLine = $sliderContent.find('.swiper-slide-active .slider-halfscreen__link-line');
  201.  
  202.                 if (!$targetBackground.length) {
  203.                     return;
  204.                 }
  205.  
  206.                 TweenMax.to($targetBackground, 0.6, {
  207.                     scale: 1.05,
  208.                     ease: Expo.easeInOut
  209.                 });
  210.  
  211.                 TweenMax.to($linkLine, 0.6, {
  212.                     width: '70px',
  213.                     ease: Expo.easeInOut
  214.                 });
  215.  
  216.             })
  217.             .on('mouseleave touchend', '.slider-halfscreen__link', function () {
  218.  
  219.                 var $targetBackground = $sliderImg.find('.swiper-slide-active .slider-halfscreen__images-slide-inner'),
  220.                     $linkLine = $sliderContent.find('.swiper-slide-active .slider-halfscreen__link-line');
  221.  
  222.                 if (!$targetBackground.length) {
  223.                     return;
  224.                 }
  225.  
  226.                 TweenMax.to($targetBackground, 0.6, {
  227.                     scale: 1,
  228.                     ease: Expo.easeInOut
  229.                 });
  230.  
  231.                 TweenMax.to($linkLine, 0.6, {
  232.                     width: '60px',
  233.                     ease: Expo.easeInOut
  234.                 });
  235.  
  236.             });
  237.  
  238.     }
  239.  
  240. }
Add Comment
Please, Sign In to add comment