返回介绍

touch事件

发布于 2024-06-02 22:07:04 字数 4379 浏览 0 评论 0 收藏 0

移动开发过程之中,涉及到touch事件的情况特别多,比如按下,按起,滑动。这些事件在不同的设备之中存在差异。

组件

之前的滑动处理我都是自己去写的,没有使用第三方的组件。看了一篇文章介绍,提到了三个组件:

  • hammer.js
  • zepto
  • appframework

这三个都对touch进行了处理,第一个是专门的触屏手势处理框架,功能很强大。其他两个,据说zepto的会好一点,虽然appframework自己说是对zepto的touch进行了修改和提升。

事件顺序

没有touch的时候: mousedown -> mouseup -> click。

有touch的时候:touchstart -> touchmove -> touchend。

都有的时候:

  • 点击操作: touchstart -> touchend -> mousedown -> mouseup -> click
  • 移动的时候: touchstart -> touchmove -> touchend

安卓设备下swipe很难触发

这是安卓的一个老问题了.谷歌一下 类似zepto android swipe的关键字,就能发现不少.很多项目中的issue都能找到这个问题,连安卓自身项目里都有相关issue(链接要翻墙)。

解决方法就是在touchstart或touchmove事件中,主动调用e.preventDefault()。

滑动方向的问题

以上下滑动为主的操作,有可能触发swipeLeft/Right事件,而不是swipeUp/Down事件.这个主要是因为native scroll的一些特性,导致算距离时竖向的距离可能会很小,而上下滑的最后,一般会有一个横向滑动的连带动作,导致deltaX>deltaY,从而判断出错.

最后说一下,还是慎用左右滑动的设计,一是兼容性问题.二是,微信等app是手机网页主要的入口,而从左向右的滑动,很容易关闭页面.

参考资料

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文