【发布时间】:2021-12-20 23:08:44
【问题描述】:
我正在寻找一种方法来防止在 Chrome 和 Safari 中出现在 OS X 上的弹性滚动。
如果你不明白我的意思,那就是当你在页面顶部时向上滚动,或者在页面底部时向下滚动,它会在页面后面显示灰色背景。
有一个针对单页应用的 css 解决方案,您只需将 overflow:hidden 添加到 html 或 body 即可
但是,我需要能够滚动。
我想出了一个使用 Javascript (JQuery) 的解决方案,但它仅适用于滚动通过顶部,并且仅适用于 chrome。此外,它在 Safari 中有点问题。
$(window).on('scroll', function(e){
scrollAmount = $(this).scrollTop();
if(scrollAmount < 1){
$(this).scrollTop(1);
}
});
所以这只是检查用户滚动到 1 以下,这意味着他们尝试向上滚动到页面结束的地方。我尝试了 0 但这没有用。 我一直无法找到一种方法来检查用户是否滚动通过了页面底部。
有什么想法吗?
编辑:
$(window).on('scroll', function(e){
scrollAmount = $(this).scrollTop();
if(scrollAmount < 1){
$(this).scrollTop(1);
}
if(scrollAmount > $(document).height() - $(window).height()){
$(this).scrollTop($(window).height());
}
});
现在我添加了一项检查,以检查我们是否滚动到页面底部。但是这种方法不起作用,它非常不优雅地弹跳。
【问题讨论】:
-
您有这样做的理由吗?我发现那一点 UI 是一个明确的指标,表明我不再需要滚动,而且它仍在工作(即没有冻结)。人们不会无缘无故地考虑这些事情。
-
我也想问你为什么要这样做。如果用户不希望这种行为,it is possible to disable it(不幸的是,不是通过 UI)。如果您确实强制执行此操作,请测试人们已将其关闭的情况!
-
我正在制作一个根据滚动量发生事情的网站。当用户滚动到页面末尾时,它会导致事情看起来有点不稳定。不是一个大错误,但我正在努力让事情看起来非常可靠。
标签: javascript jquery css