我正在使用对象中的函数将侧面板转换为滚动时的顶部面板。
看起来像这样(我“缩小了代码并删除了对象名称”):
$(document).on("scroll", vars.stickyNav );
var vars = { ... etc
undoStick: function() {
vars.sticked = false;
vars.stickyMenu.removeClass('_sticked');
return vars.stickyMenu.animate({ 'top': '-60px' }, 0, function() {
vars.clone.css({'left':-32,display:'none'});
});
},
stickyNav: function() {
if ( ! vars.sticked && vars.stickyHeight <= vars.scrollTop ) {
vars.sticked = true;
return vars.stickyMenu.addClass('_sticked').animate({ 'top': '40px'}, 0, function(){
vars.clone.show(null);
vars.clone.css('left',0);
});
}
else if ( vars.sticked && vars.stickyTop >= vars.scrollTop ) {
return vars.undoStick();
}
}
}
问题在于..如果我从页面底部的某个地方快速滚动到页面顶部,面板不会粘在一边。如果我滚动正常/慢速/正常快速它可以工作。
大多数变量是在滚动函数之外定义的。有一个附加的滚动函数绑定到窗口,它在滚动时更新 $(window).scrollTop() 变量。
这种行为的原因可能是什么?动画函数设置为 0ms 。
PS:有一个 css 过渡(三次贝塞尔曲线)。