OSX - 禁用惯性滚动,用于"单页" Web应用程序

时间:2015-01-23 04:37:11

标签: javascript css macos scroll single-page-application

我正在尝试创建一个“单页”网络应用程序,其风格与Gmail,Google Docs,Evernote等相同,其中允许惯性滚动在页面上拉动是没有意义的。

以下是我试图禁用的效果视频:

http://tinypic.com/r/2eb6fc5/8

我们怎样才能做到这一点? Disable elastic scrolling in Safari中列出了解决方案,但它们已经过时,不适用于OSX Chrome,而Gmail / Google Docs / Evernote显然有适用于所有OSX浏览器的解决方案。

3 个答案:

答案 0 :(得分:3)

这可在MacOS和iOS上使用:

overscroll-behavior-y: none;

答案 1 :(得分:1)

您只是使用了错误的关键字。我发现了这个:

document.body.addEventListener('touchmove',function(e){
    e.preventDefault();});

但这不是一个合适的解决方案。最好将内容包装在某个div中,并在其上使用css属性:

 -webkit-overflow-scrolling: touch;

以下是“弹跳”的一些有用链接 here and here

答案 2 :(得分:1)

更新Jan / 2019

有一个更简单的CSS解决方案:

body {
    overflow: hidden;
}

原始答案:

我找到了一个完美的解决方案 - 覆盖滚动事件。

$body.addEventListener("mousewheel", function(e){ e.preventDefault(); });

原来惯性滚动实际上只是普通滚动的扩展,其中特殊鼠标驱动器以模拟惯性效果的方式发出滚动事件。因此,重写滚动事件本身可以防止惯性滚动。

See this link for examples with cross-platform compatibility.