2013-12-10 78 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毫秒調用,從而避免那些幾十或幾百不必要的電話。