![](/img/trans.png)
[英]detect (event) attempting to scroll up/down when already at top/bottom of the page with javascript or angularJS,
[英]Scroll to bottom of page when scroll down and to top when scroll up smoothly
我有一个网页,其中有两个堆叠的div,每个div的高度均为100vh。 我有两个目标:
在这里标记
<div class='jumbotron' style='height:100vh;'></div>
<div class='content' style='height:100vh;'></div>
我的第一次尝试通过以下代码实现了第一个目标,但没有达到第二个目标。
var lastScrollTop = 0;
$(window).scroll(function(event){
var st = $(this).scrollTop();
if (st > lastScrollTop){
$(window).scrollTop(1000);
}
else {
$(window).scrollTop(0);
}
lastScrollTop = st;
});
我尝试了以下代码,但有2个问题。 首先,向下滚动动画的播放速度非常慢,因此会使用户感到困惑。 其次,由于某种原因,一旦浏览器滚动到页面底部,它就会卡在那儿并且永远不会返回。
var lastScrollTop = 0;
$(window).scroll(function(event){
var st = $(this).scrollTop();
if (st > lastScrollTop){
$('html, body').animate({
scrollTop: $("#displayed-text").offset().top
}, 2000);
}
else {
$('html, body').animate({
scrollTop: $(".jumbotron").offset().top
}, 2000);
}
lastScrollTop = st;
});
您能否指导我找到成功实现这两个目标的更好方法?
scrollTop获取一个数字并滚动到页面上的该数字,在第二个动画中,您给scroolTop一个jquery对象= $(".jumbotron")
,您应该执行与上述相同的操作offset()。top,然后返回一个数字,即给定div顶部的位置。 因此$(".jumbotron").offset().top
。
另外,您将动画设置为2秒,这意味着您想要的动画(从顶部移动到底部以及从底部移动到顶部)将需要2秒才能完成,如果您希望动画更快,则需要使用第二个参数来播放传递给.animate(),以毫秒为单位,即1000 = 1秒。
更新的代码:
var lastScrollTop = 0;
var animationTime = 2000; //play with that number to get the right speed you want
$(window).scroll(function(event){
var st = $(this).scrollTop();
if (st > lastScrollTop){
$('html, body').animate({
scrollTop: $("#displayed-text").offset().top
}, animationTime);
}
else {
$('html, body').animate({
scrollTop: $(".jumbotron").offset().top
}, animationTime);
}
lastScrollTop = st;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.