【发布时间】:2014-09-20 13:21:24
【问题描述】:
我使用以下 javascript 制作了一个“粘性”导航,当用户滚动过去时,它使导航固定在屏幕顶部。这段代码工作正常,虽然当元素被设置为粘性并且元素的位置设置为“固定”时,主体中所有以下元素的位置“跳跃”以占据从更改元素产生的间隙相对于固定,并产生轻微的“颠簸”效果。为了解决这个问题,我尝试在元素更改为固定时向滚动 y 位置添加偏移量,但这会通过再次触发滚动功能导致循环,并且页面滚动到页面底部。
所以我的问题是 - 如何在下面的函数中为滚动位置添加偏移量?即,如何在 $(window).scroll 函数中设置滚动位置,而不 触发 $(window).scroll 函数进入循环?
$(window).scroll(function (event) {
var y = $(this).scrollTop();
var top = $('#main-navigation').offset().top;
if (y >= top) {
$('#navigation').addClass('fixed');
}
else {
$('#navigation').removeClass('fixed');
}
});
非常感谢任何帮助
【问题讨论】:
-
可以添加
event.preventDefault()来停止执行window的默认滚动行为。另外,你能发一个Fiddle 让我们可以看到这个问题吗?
标签: javascript jquery