我有一個基本上是四個div的網站 - 每個網站都設置爲窗口的高度,這樣整個文檔就是窗口高度的四倍。如何「捕捉」滾動到最近的預定義位置?
的想法是,在一個div上點擊一個「窗口高度」推進滾動 - 這工作得很好,像這樣:
// on click event
if(cur_frame<number_slides){
scrolling = true;
$('html,body').animate({scrollTop:window_height*cur_frame},function(){
scrolling=false;
});
}
用戶滾動後的頁面手動然而,我喜歡將位置「捕捉」到窗口高度的最接近的倍數 - 因此給定的div再次集中在屏幕上。我嘗試使用超時,盤算,一個小的延遲將保持它觸發一千倍第二...
// on scroll event
clearTimeout(scroll_timer);
if(!scrolling) scroll_timer = setTimeout(function(){
if(cur_scroll!=window_height*(cur_frame-1)) {
scrolling = true;
$('html,body').stop().animate({scrollTop:window_height*(cur_frame-1)},function(){
scrolling = false;
});
}
},100); //20? 400? 1000?
...但不能攻擊腳本爭奪滾動位置的用戶之間的平衡,或者是一個嚴重的延遲,從而破壞了「捕捉」效應。
任何建議如何實現?
一個問題......真的沒有「滾動」的頁面錨。 – Sparky
是的,我知道在哪裏滾動 - 這個問題是一個平滑的'捕捉'效果。 –
頁面錨點的全部點是捕捉到一個位置!它確實起作用,我在FF Chrome和IE上試了一下,然後才發佈了答案。不能相信我被拒絕了! –