如何停止与移动Safari浏览器的滚动?

问题描述:

我试图在一个网络应用程序上获得这种动作,它由一个“马赛克”视图组成,共有6列6列视图。导航在桌面浏览器上很好地工作,但使用Mobile Safari变得困难。如何停止与移动Safari浏览器的滚动?

这是我试图让行动:

用户扫描(快) - >页面移动1个视图上/下/左/右
用户触摸&拖累 - >页面如下手指 用户抬起手指(touchend) - >惯性滚动停止,页面移动1个视图上/下/左/右

目前我使用Hammer.js,它的伟大工程,其prevent_default -setting为真,但拖动时内容不会跟随手指。

哪个更容易/更好,用代码在拖动事件上移动页面,还是试图劫持touchend上的滚动?

您正处在正确的轨道上!我喜欢hammer.js。如果您希望页面随用户手指一起移动,我将使用代码在拖动事件上移动页面。例如,您可以执行如下操作:

hammer.bind('drag', function(ev) { 
    x = ev.position.x; 
    y = ev.position.y; 
    mosaic.style.webkitTransform = 'translate3d('+(x) +'px, '+(y) + 'px, 1px)'; 

“mosaic”是容纳瓷砖的容器。棘手的部分是确定哪个图像然后“捕捉”。也许你也可以使用jQuery .offset()来确定touche coords和你的马赛克之间的关系吗?

查看最新版本的Hammer.js以获得一些额外的帮助。您现在也可以评估:

center  {Object}  center position of the touches. contains pageX and pageY 
deltaTime {Number}  the total time of the touches in the screen 
deltaX  {Number}  the delta on x axis we haved moved 
deltaY  {Number}  the delta on y axis we haved moved 
velocityX {Number}  the velocity on the x 
velocityY {Number}  the velocity on y