theonlychase
11/14/2017 - 11:30 PM

Add animation based on scroll position of the element

Add animation based on scroll position of the element

var $animation_elements = $('.animation-element');
var $window = $(window);

function check_if_in_view() {
  var window_height = $window.height();
  var window_top_position = $window.scrollTop();
  var window_bottom_position = (window_top_position + window_height);
 
  $.each($animation_elements, function() {
    var $element = $(this);
    var element_height = $element.outerHeight();
    var element_top_position = $element.offset().top;
    var element_bottom_position = (element_top_position + element_height);
 
    //check to see if this current container is within viewport
    if ((element_bottom_position >= window_top_position) &&
        (element_top_position <= window_bottom_position)) {
      $element.addClass('slideInLeft');
    } else {
      $element.removeClass('slideInLeft');
    }
  });
}

$window.on('load scroll resize', check_if_in_view);
$window.trigger('scroll');
.slideInLeft {
  -webkit-animation-name: slideInLeft;
  animation-name: slideInLeft;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  }
  @-webkit-keyframes slideInLeft {
  0% {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  visibility: visible;
  }
  100% {
  -webkit-transform: translateX(0);
  transform: translateX(0);
  }
  }
  @keyframes slideInLeft {
  0% {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  visibility: visible;
  }
  100% {
  -webkit-transform: translateX(0);
  transform: translateX(0);
  }
  }
  
  .slideOutLeft {
  -webkit-animation-name: slideOutLeft;
  animation-name: slideOutLeft;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  }
  @-webkit-keyframes slideOutLeft {
  0% {
  -webkit-transform: translateX(0);
  transform: translateX(0);
  }
  100% {
  visibility: hidden;
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  }
  }
  @keyframes slideOutLeft {
  0% {
  -webkit-transform: translateX(0);
  transform: translateX(0);
  }
  100% {
  visibility: hidden;
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  }
  }