2

我正在尝试探索创建 HTML5 交互的可行性,其中触摸可以通过初始运动方向有条件地捕获。

目标是仅在触摸最初沿水平方向移动时才捕获和跟踪触摸的运动。结合仅垂直滚动的响应式页面布局,我们应该能够使用水平滑动动作通过跟踪它来做一些很酷的事情。

问题在于似乎不可能有条件地执行触摸序列捕获(尤其是在 iOS 上) 。

为了跟踪触摸(我的意思是专门获取代表手指随着时间的位置的 x,y 坐标流),touchstart必须进行preventDefault编辑以防止页面参与本机动量滚动。原生动量滚动在运行时会暂停所有 JS 执行(setTimeout、rAF、jQueryanimate等),甚至 CSS 关键帧/动画/过渡执行。

我真的很想知道是否有办法以某种方式调节preventDefault()原始touchstart事件的条件。JS 完全有可能存储该事件对象,然后直到稍后再调用它(当确定我们确实有兴趣阻止本机滚动启动时)。

但这肯定会失败,因为不在preventDefault()该事件上运行的默认行为是使用 native-scroll,这将在整个剩余滚动期间阻止 JS 执行。未能返回附加到的事件侦听器函数touchstart似乎不是一个选项。它会冻结一切。

暂定的答案,然后,没有任何额外的见解,如果我们想要完全捕获它,就必须捕获所有滑动,并且滚动必须通过外部手段“伪造”à la (iScroll)[http:/ /cubiq.org/iscroll-5-ready-for-beta-test] (我个人想探索某种 rAF 的组合,window.scrollTo如果 iScroll 5 不使用这些 API,我会感到惊讶)

顺便说一句,那里对第 4 个演示的描述让我非常兴奋,但事实证明,它所做的只是创建一个页面部分,该部分可以水平滚动,而页面的其余部分则有规律地运行,这完全是平凡的。

4

0 回答 0