禁用弹性滚动Chrome/Safari

8hhllhi2  于 2023-11-14  发布在  Go
关注(0)|答案(4)|浏览(227)

This method根本不适合我。
有没有什么现代化的方法可以做到这一点?
我的客户总是讨厌它,我还没有找到一个好方法来禁用它。
所谓弹性滚动,我的意思是一旦你到达页面的顶部或底部,这些浏览器允许页面“过度滚动”以显示空白区域。

vybvopom

vybvopom1#

这里有一个方法来禁用它的Chrome

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

字符串
From:https://developers.google.com/web/updates/2017/11/overscroll-behavior

camsedfj

camsedfj2#

如果CSS黑客没有在你的情况下删除它,那么你可能需要使用JS来处理滚动。
我强烈建议不要这样做,因为用户希望滚动有某种特定的行为方式。更不用说让JS滚动平滑并像原生滚动一样响应是非常困难的。
我不知道你在构建什么,所以当然这可能不适用于你的情况,但你通常应该(在,总是,除非你有一个令人信服的理由反对它)把这样的常见交互留给操作系统,以避免混淆用户。你的客户可能不喜欢它,但这是他们的用户会期望的,这应该是更重要的。

kognpnkq

kognpnkq3#

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

body, html { overscroll-behavior: none; }

字符串

ibps3vxo

ibps3vxo4#

现代浏览器可能已经改变了(我想我几年前就已经解决了这个问题,但是旧项目中的技术不再有效),但这就是我现在使用的,没有用户或个人抱怨足够严重来探索JavaScript scroll-event-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上,可能是一个因素),如果你在其他环境中工作,可能是一个入门线索/方法。

相关问题