有没有办法在滚动div中禁用反弹效果?
到目前为止,我已经尝试了这些方法,但没有一个奏效。请帮忙!
如何在移动Web应用程序中禁用iPhone上的垂直反弹/滚动
无法使用 UIScrollView 和分页禁用反弹已启用 = 是
iPad Safari:禁用滚动和弹跳效果?
滚动时禁用 UITableView 垂直反弹
和
http://www.iphonedevsdk.com/forum/iphone-sdk-development/996-turn-off-scrolling-bounces-uiwebview.html
谢谢!
如果您使用的是 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 以允许它通过。
在触摸端,您将门重置为 false。
这适用于IOS5和6,并且可以在Chrome和Safari
中工作。
看看@这篇文章来扩展它
滚动 DIV 元素时如何防止页面滚动?
唯一的问题是,如果您过度滚动可滚动元素,弹性效果允许在滚动设置为 true 时向上传递到树上。手动设置滚动位置会被可怕的反弹效果覆盖。
我敢打赌,那些苹果冰箱有一个原生的滚动实现,在设定的超时内运行,每一步都硬连线。
因此,如果您滚动到 -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;