MobileSafari(iOS Safari):有没有办法防止水平/垂直滚动“捕捉”?

Posted

技术标签:

【中文标题】MobileSafari(iOS Safari):有没有办法防止水平/垂直滚动“捕捉”?【英文标题】:MobileSafari (iOS Safari): Is there a way to prevent horizontal/vertical scroll "snapping"? 【发布时间】:2012-12-20 15:09:10 【问题描述】:

我有一个 Web 应用程序,它显示 2D 图表的可滚动视图,我试图让用户更轻松地让视图始终跟随手指。

默认行为是大多数滑动动作都会导致垂直或水平受限的移动,这对阅读文本很有帮助,但对我的用例来说不是那么大。

编写自定义触摸事件代码来直接设置滚动是一种可能性,但这使得恢复滚动势头变得困难。此外,原生功能能够在幕后做一些特殊的事情,比如暂停 JS 操作并避免重新渲染,这有助于整体性能。

是否有可以控制方向控制行为的 CSS 样式?

【问题讨论】:

请澄清一下,你想要动力吗? 我确实想要动力。我不想要方向约束。 您的页面是否只包含图表? O 【参考方案1】:

我还没有找到指定行为的方法,但我发现当我放下手指而不移动它然后在一秒钟后开始移动它时,它可以让我向各个方向滚动。

也许看看iScroll 或类似的东西是否适合你,因为它包括动量,你可以明确指定是否要锁定方向。

【讨论】:

我从不止一个人那里听说过握住手指的时间更长会触发它,但每当我测试时,情况并非如此。在我看来,考虑了初始运动的方向。在选择功能弹出之前,我可以将它按住直到 just,然后直接向下移动,然后在剩余的触摸中垂直限制它。我的怀疑是,用户在稍微长一点的按住后更倾向于做对角拖动。 嗯,我认为你是对的。我只是更仔细地测试了一下,似乎只要我的滑动不在水平或垂直轴的一定程度内,我就可以向各个方向滚动,无论我最初的触摸有多长或多短。【参考方案2】:

你可以让图表溢出页面大小:

#diagram
    width: 2000px;

所有其他部分都应该修复:

#menu, etc
    position: fixed

这样你可以使用页面本身的滚动,没有方向限制。

为防止 iPad 调整内容大小以适应设备宽度,您将其添加到 <head>

<meta name="viewport" content="initial-scale=1, user-scalable=no, width=2000px">

【讨论】:

这个答案并没有解决这个问题:除非你小心最初沿对角线移动手指,否则它会限制它。 “页面本身的滚动”默认有方向约束。

以上是关于MobileSafari(iOS Safari):有没有办法防止水平/垂直滚动“捕捉”?的主要内容,如果未能解决你的问题,请参考以下文章

iOS/Mobile Safari 是不是支持 HTML 图像映射中的触摸事件

Websql 排队执行 - iOS6 Mobile Safari

iOS 6.1.3 Mobile Safari / UIWebView 发送错误的区域设置区域代码

有啥方法可以在 iOS 设备的 Mobile Safari 上使用 window.onbeforeunload 吗?

无法使用 Node 在 iOS 模拟器中连接到 Mobile Safari

移动 safari 和 iOS 11:导航栏重叠的 Web 应用程序和全高 (100vh)