jQuery:有些东西在推迟动画

时间:2013-06-23 04:29:38

标签: javascript jquery

是什么让动画延迟? 网站上的所有jQuery都有一些延迟..

$(function(){
  $(window).scroll(function() {
       var elementTop = $('body').offset().top; 
       var position = elementTop+ $(window).scrollTop();
       if(position >= 20){
           $('#top').animate({top: '40px'}, 300);
       } else if(position < 20){
           $('#top').animate({top: '80px'}, 300);
       }
console.log(position);
  });   
});

住: Link here - 这是菜单/导航

1 个答案:

答案 0 :(得分:4)

每次滚动时都会触发您的代码。 animate方法正在连接,一个接一个地运行。要实现您的目标,您需要停止当前动画并开始一个新动画:

$(function(){
    $(window).scroll(function(){
        var elementTop = $('body').offset().top,
        position = elementTop+ $(window).scrollTop();

        if (position >= 20){
            $('#top').stop().animate({top: '40px'}, 300);
        }
        else if (position < 20) {
           $('#top').stop().animate({top: '80px'}, 300);
        }
    });   
});