我正在尝试创建一个“单页”网络应用程序,其风格与Gmail,Google Docs,Evernote等相同,其中允许惯性滚动在页面上拉动是没有意义的。
以下是我试图禁用的效果视频:
http://tinypic.com/r/2eb6fc5/8
我们怎样才能做到这一点? Disable elastic scrolling in Safari中列出了解决方案,但它们已经过时,不适用于OSX Chrome,而Gmail / Google Docs / Evernote显然有适用于所有OSX浏览器的解决方案。
答案 0 :(得分:3)
这可在MacOS和iOS上使用:
overscroll-behavior-y: none;
答案 1 :(得分:1)
您只是使用了错误的关键字。我发现了这个:
document.body.addEventListener('touchmove',function(e){
e.preventDefault();});
但这不是一个合适的解决方案。最好将内容包装在某个div中,并在其上使用css属性:
-webkit-overflow-scrolling: touch;
答案 2 :(得分:1)
更新Jan / 2019
有一个更简单的CSS解决方案:
body {
overflow: hidden;
}
原始答案:
我找到了一个完美的解决方案 - 覆盖滚动事件。
$body.addEventListener("mousewheel", function(e){ e.preventDefault(); });
原来惯性滚动实际上只是普通滚动的扩展,其中特殊鼠标驱动器以模拟惯性效果的方式发出滚动事件。因此,重写滚动事件本身可以防止惯性滚动。
See this link for examples with cross-platform compatibility.