gpt4 book ai didi

javascript - 在滚动时,向下/向上滚动 100vh 一次

转载 作者:行者123 更新时间:2023-11-30 21:04:50 24 4
gpt4 key购买 nike

我想处理滚动,当我向下滚动时我想滚动整个 viewport.height 并向上滚动相同但相反的方式:

它正在使用它,但它只适用于一次向下滚动和一次备份(它也有一段时间我无法滚动,如果我在一段时间后上下移动,ig 下降并等待然后再次向上) :

function viewport() {
var e = window, a = 'inner';
if (!('innerWidth' in window )) {
a = 'client';
e = document.documentElement || document.body;
}
return { width : e[ a+'Width' ] , height : e[ a+'Height' ] };
}
var height = viewport().height;
$(document).on('wheel', function(e) {
var delta = e.originalEvent.deltaY;
if(delta > 0) $('html, body').animate({scrollTop: height+'px'});
else $('html, body').animate({scrollTop: '-'+height+'px'});
return false;
});
body{min-height: 300vh; overflow: auto;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

最佳答案

问题是因为您需要从当前位置递增或递减 scrollTop。您当前的代码仅将其重复设置为单个值,因此似乎没有任何变化。

要解决此问题,请根据所需的行进方向在 scrollTop 值前加上 +=-=。另请注意,您可以简单地在 jQuery 中使用 $(window).height() 来代替您当前拥有的 viewport() 函数。

最后,您还需要在其中包含一个 stop(true) 调用,以防止在用户反复滚动鼠标滚轮时动画排队。

$(document).on('wheel', function(e) {
e.preventDefault();
$('html, body').stop(true).animate({
scrollTop: (e.originalEvent.deltaY > 0 ? '+=' : '-=') + $(window).height() + 'px'
});
});
body {
min-height: 300vh;
overflow: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

关于javascript - 在滚动时,向下/向上滚动 100vh 一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46756664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com