有没有办法在滚动 div 中禁用反弹效果?
到目前为止,我已经尝试过这些东西,但都没有奏效。请帮忙!
如何在移动 Web 应用程序中禁用 iPhone 上的垂直弹跳/滚动
无法使用 UIScrollView 和 pagingEnabled=YES 禁用反弹
和
谢谢!
有没有办法在滚动 div 中禁用反弹效果?
到目前为止,我已经尝试过这些东西,但都没有奏效。请帮忙!
如何在移动 Web 应用程序中禁用 iPhone 上的垂直弹跳/滚动
无法使用 UIScrollView 和 pagingEnabled=YES 禁用反弹
和
谢谢!
如果您使用的是 Cordova 1.7,只需打开Cordova.plist文件并将键UIWebViewBounce设置为NO。
打开你的 phoneGap 项目的config.xml
文件并将 UIWebViewBounce 从默认的 true 更改为 false:
<preference name="UIWebViewBounce" value="false" />
无法想象为什么默认为真......
根据您的评论,您使用的代码完全是禁用滚动。如果您想要滚动,但没有反弹效果,请尝试以下操作:
var xStart, yStart = 0;
document.getElementById("scrollableDiv").addEventListener('touchstart',function(e) {
xStart = e.touches[0].screenX;
yStart = e.touches[0].screenY;
});
document.getElementById("scrollableDiv").addEventListener('touchmove',function(e) {
var xMovement = Math.abs(e.touches[0].screenX - xStart);
var yMovement = Math.abs(e.touches[0].screenY - yStart);
if((yMovement * 3) > xMovement) {
e.preventDefault();
}
});
我在这里找到了这个解决方案。请让我知道这对你有没有用。
这将帮助您将 .scroll 类放置在您希望仍然滚动的元素上。
发生的事情是默认情况下禁用所有触摸动作。如果您希望滚动的元素上有 .scroll 类,那么它将门设置为 true 以允许它通过。
在触摸结束时,您将门重置为假。
这适用于 IOS5 和 6,并且可以在 Chrome 和 Safari 中运行
查看@这篇文章以扩展它
如何在滚动 DIV 元素时防止页面滚动?
唯一需要注意的是,如果您过度滚动可滚动元素,则弹性效果允许滚动向上传递,而滚动设置为 true。手动设置滚动位置会被可怕的反弹效果覆盖。
我敢打赌,那些 Apple friggers 有一个原生的滚动实现,在设定的时间内运行,每一步都硬连接。
所以如果你滚动到 -20,我认为它把每一步都硬连接到一个循环中,而不是检查它在哪里。依次滚动到 -20 -19 -18 等。
我们必须想办法解决这个问题!(事实上,我有一个想法!)
$(function(){
var scroll = false
var scroll_element;
$('body').on('touchmove',function(e){
if(!scroll){
e.preventDefault()
}
})
$('body').on('touchend',function(e){
scroll = false
})
$('.scroll').on('touchstart',function(e){
scroll_element = this
scroll = true
})
})
我知道这可能不是最好的方法,但它确实有效。
这是我所做的 -
#scrollableDiv {
position:fixed;
top:50px;
width:300px;
height:500px;
word-wrap: break-word;
overflow-y: scroll;
}
document.getElementById("scrollableDiv").innerHTML = longText;
document.getElementById("scrollableDiv").scrollTop = 0;