向jQuery滚动边栏添加动画

问题描述:

我在jQuery中使用了滚动边栏功能,并且想要为过渡添加动画。如何编辑我的代码以在页面上下滚动时应用动画来平滑过渡?向jQuery滚动边栏添加动画

这里是我的FIDDLE

这里是我的JS:

$(function() { 

    var $blah = $("#blah"), 
     $window = $(window), 
     offset  = $blah.offset(); 

    $window.scroll(function() { 
     if ($window.scrollTop() > offset.top) { 
    $blah.css('top','120px'); 
     } else { 
    $blah.css('top','440px'); 
    } 
    }); 


}); 

这里是我的CSS:

#blah { 
    display:none; 
    top: 320px; 
    right: 30px; 
    position: fixed; 
    margin: 0 20px 0 20px; 
    padding: 0px !important; 
} 

尝试使用.stop().animate()。之所以我建议在.animate()之前使用.stop()是为了防止效应过度链接。基本上你会指示浏览器“当我滚动时放弃你现在正在做的事情”,然后“开始动画”。

$(function() { 

    var $blah = $("#blah"), 
     $window = $(window), 
     offset = $blah.offset(); 

    $window.scroll(function() { 
     if ($window.scrollTop() > offset.top) { 
      $blah.stop().animate({ 
       top: 50 
      }); 
     } else { 
      $blah.stop().animate({ 
       top: 100 
      }); 
     } 
    }); 
}); 

在这里看到的小提琴 - http://jsfiddle.net/4VbDN/6/

[编辑]:你甚至可以调整动画的持续时间以及分配一个回调函数甚至.animation()被触发。有关更多说明,请检查jQuery API for .animate() :)