jQuery とその animate() 関数を使用して、div の top: CSS プロパティを変更する、非常に単純なアニメーション化されたスティッキー サイド バーを作成しようとしています。残念ながら、クロム以外のすべてで、非常に遅くなる可能性があります。ウィンドウがスクロールするたびにメモリがいっぱいになり、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');
}
});
});