滚动后触发JQuery动画的scrollTop

时间:2018-08-29 21:53:14

标签: javascript jquery

我编写了一个动画功能,当我通过单击按钮触发它时可以很好地工作,但是当我在滚动div时尝试触发它时,动画在动画上会跳动(跳到div顶部)。

编辑:一个jsfiddle示例https://jsfiddle.net/mxubjhko/5/

这是eventListener代码:

var lastPosition = 0;
var doneAnimate = true;
var lastID = 1;
window.onload = function() {
  document.getElementById("content").addEventListener("scroll", function(e) {
    e.preventDefault();
    var current = document.getElementById("content").scrollTop;
    if (lastTopPosition > current) {
      if (doneAnimate) {
        Slide(lastID - 1);
      }
    } else if (lastTopPosition < current) {
      if (doneAnimate) {
        Slide(lastID + 1);
      }
    }
    lastTopPosition = current;
    return false;
  })
}

这是动画功能:

function Slide(ID) {
  console.log(ID)
  lastID = ID;
  $("#content").animate({
      scrollTop: $("#part" + ID).offset().top
    }, {
      duration: 1000,
      easing: "linear",
      complete: function() {
        doneAnimate = true;
      },
      start: function() {
        doneAnimate = false;
      }
    }


  );
}

0 个答案:

没有答案