2016-04-14 89 views
1

我想要使用.scrollTo在jquery滾動到另一個部分的基礎上,如果滾動方向是向上或向下。 我在示例中有scrollTo源代碼,但滾動仍在定期滾動。使用.scrollTo()滾動到一個部分

DEMO

var lastScrollTop = 0; 
$(window).scroll(function(event){ 
    var st = $(this).scrollTop(); 
    if (st > lastScrollTop){ 
     $('body').scrollTo('.one'); 
    } else { 
     $('body'.scrollTo('.two'); 
    } 
    lastScrollTop = st; 
}); 
+0

您將一個事件綁定到'window',但將結果應用於「身體」,只有這樣才能告訴你一些事情已經結束。具體來說,一些瀏覽器使用'document.body'作爲滾動根目錄,其他瀏覽器使用'document.documentElement'。 –

+0

[scrollTo](https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo)需要座標。所以你需要給它一個0,$(「。one」)。offset().top'而不是'(「.one」)' – mplungjan

+0

,你需要關閉'$('body' )'in your else statement – kingkode

回答

2

你試過:

$("body").stop().animate({ 
    scrollTop : $(".one").offset().top 
}); 

(偏移可能需要改變位置取決於你的網站)

-edit:增加.stop()這將阻止動畫重疊

+0

https:/ /jsfiddle.net/o23moguo/它似乎在一次滾動中多次調用if/else語句?它會向下滾動,然後再向下滾動一次向下滾動。 – Shniper

+0

@Shniper您是否嘗試過添加stop()? – Moseleyi

相關問題