如何在底部达到80%时禁用滚动?我从下面的代码开始禁用滚动功能,但它在iPhone上不起作用。源
useEffect(() => {
document.addEventListener('touchstart', function(e) {e.preventDefault()}, false);
document.addEventListener('touchmove', function(e) {e.preventDefault()}, false);
}, []);
是否有一个js/CSS的方式或任何包,可以检测滚动百分比?并禁用它时,达到约80%的底部(但可以再次向上滚动)?
window.scrollY
将为您提供页面滚动的数量,您可以获得这些值,然后对它们进行一些计算以达到您的期望。
你可以实现它们在另一个useEffect
钩子来控制你的滚动数量,然后触发侦听器或在到达时删除它们:
useEffect(() => {
if(window.scrollY > document.body.offsetHeight) {
// now you can remove your listener
}
}, [])
注1:document.body.offsetHeight
是你的整个页面的大小,用户看到没有任何滚动
注2:你可以用这些参数做简单的计算来达到你想要的行为。
注3:在这个伪代码中,useEffect
将在每次页面大小更改和每次滚动之后触发,因为它的依赖项数组。为了防止或增强这种情况,你可以为你的窗口的实际大小创建一个变量,然后传递给使用useEffect
依赖数组来触发它。