Javascript 到达特定元素时向上滚动网页(如果已到达)
我有一段代码,当页面加载时,它会自动滚动到最后一个元素:Javascript 到达特定元素时向上滚动网页(如果已到达),javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我有一段代码,当页面加载时,它会自动滚动到最后一个元素: <!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> &
<!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>
...
开始
...
终点
$(窗口)。加载(函数(){
$('body')。滚动到('end',{duration:5000});
})
我想做的是,当它到达结束元素时,它向上滚动到开始元素,然后继续这个过程,直到满足特定的标记
所以这里有两个问题:
此功能将起作用
$('.go-top').click(function (e) {
e.preventDefault();
$('html,body').animate({
scrollTop:$("YourID").offset().top + 'px'
}, 'slow');});
用于转到具有
someID
的特定元素:
$('html, body').animate({
scrollTop: $("#someID").offset().top
}, 2000);
并滚动至页面顶部:
$('html, body').animate({scrollTop: '0px'}, 300);
要检查滚动后is元素是否可见,请执行以下操作:
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));
}
函数是crolledintoview(elem)
{
var docViewTop=$(window.scrollTop();
var docViewBottom=docViewTop+$(window).height();
var elemTop=$(elem).offset().top;
var elemBottom=elemTop+$(elem).height();
返回((elemBottom=docViewTop));
}
在哪种情况下,您正在执行scrollTo()方法,如单击任何按钮。您说“它到达结束元素”。这是什么意思?您如何通过滚动页面来满足结束元素?我的意思是它从页面顶部滚动到底部。一旦完成,我想把它发送到另一个元素。有可能吗?在某些网页中,如果我们在最后完全向下滚动,我们会有一个名为“Top”的选项。如果单击该按钮,它将滚动到页面顶部。。我说得对吗?我不想转到“Top”元素,而是想转到特定的id。只有在达到myCurrentID时,我才需要滚动到someID。或者换句话说,我想向下滚动到ID1,然后一旦停止滚动,移动到ID2,依此类推,直到到达ID9。我该怎么做?@BranAlgue:更新了答案。在页面上调用iscrolledintoview($(“#someID”)
,每次滚动。如果滚动后元素可见,则返回true。