窗口上的重新定位页面调整大小

时间:2013-12-10 22:28:15

标签: javascript jquery

我正在使用scrollTo()进行页面滚动。我发现的一个问题是,当我调整浏览器大小时,页面不会再次滚动到我指定的元素,但它会保留在中间位置,所以我必须再次单击“滚动”按钮以对齐页面。当用户调整浏览器大小时,有没有办法对齐页面。

我试过用这个:

window.onresize = function() {
    scrollToPosition(section[position]);
}

// position is variable which I declared above this event

但这会使滚动变得疯狂,页面开始向右/向左移动非常快,这是不正常的。我相信每次调整浏览器大小时都会绑定onresize事件。

我的问题是否有任何解决方案

编辑:

这是jsFiddle,但似乎我不知道如何使用jsFiddle,因为这里没有任何作用:http://jsfiddle.net/52eRj/1/

2 个答案:

答案 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毫秒后调用,因为窗口已经停止调整大小,因此避免了那几十或几百个不必要的调用。