2013-12-10 80 views
0

我正在使用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

请转到您的问题。 – ProllyGeek

回答

0

你能避免每次resize事件通过编写如下代码来执行重新运行功能。滚动时,每1秒执行一次scrollToPosition函数。

var last = new Date().getTime(); 
var interval = 1000; // Set your own time. 
window.addEventListener('resize', function() { 
    var curr = new Date().getTime(); 
    if (curr - last > interval) { 
     last = curr; 
     scrollToPosition(section[position]); 
    } 
}); 
0

的问题可能是你在每一个调整事件,它可以在一个正常手动调整大小被开除100次呼唤你scrollToPosition功能。

为了避免这种情况,你可以使用clearTimeout这样的:

$(window).resize(function() { 
    clearTimeout(resizeId); 
    resizeId = setTimeout(doneResizing, 500); 
}); 


function doneResizing() { 
    scrollToPosition(section[position]); 
} 

这样,doneResizing功能会因为窗口已停止调整只经过500毫秒调用,从而避免那些几十或几百不必要的电话。