我一直在尝试使用 jQuery 及其 animate() 函数编写一个非常简单的动画粘性侧栏来更改顶部:div 的 CSS 属性。不幸的是,除了 chrome,它会变得非常滞后。我假设每次窗口滚动时它都会填充内存并计算一个newTop。有一个更好的方法吗?
$(function() { // document ready
var $sticky = $('.sticky');
var stickyTop = $sticky.offset().top;
var padding = 0;
var stickyMargin = parseInt($sticky.css('margin-top')) + padding;
var intersection = stickyTop - stickyMargin;
$(window).scroll(function(){
var windowTop = $(window).scrollTop();
if (intersection < windowTop) {
var newTop = (windowTop - intersection);
$sticky.stop().animate({top: newTop}, 'slow');
}
else if ($sticky.offset().top != 0) {
$sticky.stop().animate({top: 0}, 'slow');
}
});
});