我正在使用scrollTo()
进行页面滚动。我发现的一个问题是,当我调整浏览器大小时,页面不会再次滚动到我指定的元素,但它会保留在中间位置,所以我必须再次单击“滚动”按钮以对齐页面。当用户调整浏览器大小时,有没有办法对齐页面。
我试过用这个:
window.onresize = function() {
scrollToPosition(section[position]);
}
// position is variable which I declared above this event
但这会使滚动变得疯狂,页面开始向右/向左移动非常快,这是不正常的。我相信每次调整浏览器大小时都会绑定onresize
事件。
我的问题是否有任何解决方案
编辑:
这是jsFiddle,但似乎我不知道如何使用jsFiddle,因为这里没有任何作用:http://jsfiddle.net/52eRj/1/
答案 0 :(得分:0)
通过编写如下代码,每次执行resize
事件时都可以避免重新运行函数。滚动时,{1}}函数将每1秒执行一次。
scrollToPosition
答案 1 :(得分:0)
问题可能是您在每次调整大小事件时调用scrollToPosition
函数,在正常手动调整大小时可以触发100次。
为避免这种情况,您可以像这样使用clearTimeout
:
$(window).resize(function () {
clearTimeout(resizeId);
resizeId = setTimeout(doneResizing, 500);
});
function doneResizing() {
scrollToPosition(section[position]);
}
这样,doneResizing
函数只会在500毫秒后调用,因为窗口已经停止调整大小,因此避免了那几十或几百个不必要的调用。