2014-01-29 36 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。 –

相关问题