浏览器滚动动画

时间:2016-06-14 09:05:21

标签: javascript jquery jquery-ui jquery-plugins

我使用了jQuery,如下面的代码行

  $(window).load(function() {
  $(".shuffle").each(function() {
  $(this).circulate({
        speed: Math.floor(Math.random()*300) + 100,
        height: Math.floor(Math.random()*100) - 70,
        width: Math.floor(Math.random()*100) - 70
         });
      });
   });

圆形动画在页面加载时工作正常。

html就像

  <div id="target">
  <div class="shuffle"></div>
  <div class="shuffle"></div>
  <div class="shuffle"></div>
  <div class="shuffle"></div>
  </div>

现在我希望当用户向下滚动浏览器时,当他到达具有id目标部分的div时,动画应该开始...

请帮忙!!!

1 个答案:

答案 0 :(得分:1)

var isElementInViewport = function ($element) {
    //element has to be a jQuery element with length > 0
    var domElement = $element[0];
    var height = $element.outerHeight();
    var rect = domElement.getBoundingClientRect();
    return (
        rect.top >= 0 - height &&
        rect.bottom <= $(window).height() + height
    );
};

var shuffle = function($element) {
 //only shuffle elements within the target
 $(".shuffle", $element).each(function() {
    $(this).circulate({
      speed: Math.floor(Math.random()*300) + 100,
      height: Math.floor(Math.random()*100) - 70,
      width: Math.floor(Math.random()*100) - 70
     });
  });
}

var flag = false;
var $target = $('#target');
$(document).on('scroll', function(){
  if(isElementInViewport($target)){
    if (!flag) {
      flag = true;
      shuffle($target);
    }
  }
});