2014-01-29 40 views
1

我有,當頁面加載的代碼片段的網頁時,它會自動滾動到最後一個元素:向上滾動時,如果達到特定元素

<!DOCTYPE html> 
<html> 
<head> 
    <title>...</title> 
    <script src="jquery-2.1.0.js"></script> 
    <script src="jquery.scrollTo-1.4.3.1.js"></script> 
</head> 
<body> 


    <h1 id="begin">Begin</h1> 
    ... 
    <h1 id="end">End</h1> 

    <script> 
     $(window).load(function() { 
      $('body').scrollTo('#end', {duration:5000}); 
     }) 
    </script> 

</body> 
</html> 

我想要做的,當它到達的是結束元素它滾動到開始元素,然後繼續該過程,直到滿足特定標記。

因此,這裏有兩個問題:

  1. 如何使窗口滾動起來,當達到年底
  2. 如何檢查是否遇到特定元素ID並停止循環?
+0

在這情況下,您正在執行scrollTo()方法,如單擊任何button.And你說:「它到達末端元素」。什麼意思,以及如何通過滾動頁面會議結束元素? – user2587222

+0

我的意思是它從頁面頂部滾動到底部。一旦完成,我想把它發送到另一個元素。可能嗎? –

+0

似乎在一些網頁上,如果我們完全向下滾動,那麼我們有稱爲「頂部」的選項。如果你點擊它將滾動到頁面頂部..我是對嗎? – user2587222

回答

1

此功能將工作

$('.go-top').click(function (e) { 
    e.preventDefault(); 
    $('html,body').animate({     
     scrollTop:$("YourID").offset().top + 'px' 
      }, 'slow');}); 
1

對於要具有someID特定元素:

$('html, body').animate({ 
    scrollTop: $("#someID").offset().top 
}, 2000); 

並滾動到頁面頂部:

$('html, body').animate({scrollTop: '0px'}, 300); 

要檢查元素在滾動後可見:

function isScrolledIntoView(elem) 
{ 
var docViewTop = $(window).scrollTop(); 
var docViewBottom = docViewTop + $(window).height(); 

var elemTop = $(elem).offset().top; 
var elemBottom = elemTop + $(elem).height(); 

return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)); 
} 
+0

我只有在達到myCurrentID時才需要滾動到someID。換句話說,我想向下滾動到ID1,然後一旦停止滾動移動到ID2,依此類推,直到達到ID9。我怎樣才能做到這一點? –

+0

@BranAlgue:更新了答案。每次在pagescroll上調用'isScrolledIntoView($(「#someID」))''。如果元素在滾動後可見,它將返回true。 –

相關問題