禁用弹性滚动 Chrome/Safari

问题描述 投票:0回答:4

这个方法对我来说根本不起作用。

有没有更新的现代方法可以做到这一点?

我的客户总是讨厌它,我还没有找到一个好的方法来禁用它。

弹性滚动是指一旦您到达页面的顶部或底部,这些浏览器就会允许页面“过度滚动”以显示空白区域。我正在努力阻止这种行为。

google-chrome safari webkit
4个回答
3
投票

这里有一种方法可以在 chrome 上禁用它

body {
  /* Disables pull-to-refresh and overscroll glow effect.
     Still keeps swipe navigations. */
  overscroll-behavior-y: none;
}

来自:https://developers.google.com/web/updates/2017/11/overscroll-behavior


2
投票

如果 CSS hack 在你的情况下没有删除它,那么你可能需要使用 JS 来处理滚动。

不过,我强烈建议不要这样做,因为用户希望滚动以某种方式运行。更不用说让 JS 滚动变得平滑并且像原生滚动一样响应是非常困难的。

我不知道你正在构建什么,所以当然这可能不适用于你的情况,但你通常应该(总是如此,除非你有令人信服的理由反对它)将像这样的常见交互留给操作系统避免让用户感到困惑。您的客户可能不喜欢它,但这是他们的用户所期望的,这应该更重要。


0
投票

弹性滚动限制现在可以跨浏览器工作 - 将无前缀的 overscoll-behaviour 添加到

html
body

body, html { overscroll-behavior: none; }

-1
投票

现代浏览器可能已经改变(以为我几年前就解决了这个问题,但旧项目的技术不再有效),但这就是我现在使用的,没有足够严重的用户或个人抱怨来探索 JavaScript 滚动事件-foo:

<style>
    html, body {
        overscroll-behavior: none;

        /* nothing special */
        margin: 0; padding: 0;
        background-color: #000000; /* anything on-theme */
    }
    .scrollBody {
        display: block;
        height: 100vh; /* 100% does not do it */
        overflow: scroll;
        overscroll-behavior: contain;
    }
</style>
<body>
    <div class='scrollBody'>
        <!-- everything else -->
    </div>
</body>

基本上,将滚动分配并约束到紧邻主体内的元素。如果用户在固定或绝对元素(例如页眉或页脚区域)上启动手势,您可能仍然会遇到橡皮筋,因此至少设置

<body>
主题颜色以尽量减少其明显程度。

目前在 Chrome、Safari 和 Edge 中测试良好(在带有触摸板的 macOS 上,这可能是一个因素),如果您在其他环境中进行解决,可能是一个入门线索/方法。

© www.soinside.com 2019 - 2024. All rights reserved.