原生js右滑动手势

最近一个前端工单项目有个"右滑返回"的需求,以前没有去了解相关知识,趁着这个需求,正好了解一下相关知识点

项目功能需求

在APP端容器运行前端代码,由于前端代码采用vue+webpack的方式,而且试图内容较多,不便于直接加"返回"按钮,同时也为了方便,所以才有右滑返回的的形式

技术原理

采用原生js的触摸事件,根据起点(x0, y0)和(x1, y1)组成的直线,因为普通滑动很难是一条绝对水平的直线,这里根据其斜率和方向,只要斜率的绝对值小于1,即可认为是右滑动。

触摸事件种类

  1. touchstart 触摸开始时触发
  2. touchmove 触摸后,手指移动时一直在触发
  3. touchend 手指离开时触发
  4. touchcancle 系统停止跟踪时触发(一般不使用)

部分属性

target 类型 说明
target EventTaget 事件触发发目标
type DOMString 事件类型
bubbles Boolean 是否冒泡
cancelable Boolean 事件能否取消
touches TouchList 当前屏幕上所有的触摸点的集合
targetTouches TouchList 绑定事件的那个节点上,所有触摸点的集合
changedTouches TouchList 触摸点发生 改变的集合。注意:当触发touchend时,touches属性和targetTouches属性中的touchList长度为空,这时候要想取得触发点的信息,就必须使用changeTouches

vue代码示例

function startTouch(evt) {
    // 缓存起始位置信息
    this.touchStartTaget = evt.targetTouches[0]
  }
function endTouch(evt) {
    const endTouch = evt.changedTouches[0]
    const startTouch = this.touchStartTaget
    const deltaX = endTouch.clientX - startTouch.clientX
    const deltaY = endTouch.clientY - startTouch.clientY
    // 向右滑, x轴有效长应大于100px
    if (deltaX > 50) {
      // 上下偏移量小于45°
      if (Math.abs(deltaY) / deltaX <= 1) {
        // 认为 ”右滑动“
        console.log("右滑动")
      }
    }
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 【日精进打卡第60天】 【知~学习】 《六项精进》2遍 共148遍 《大学》2遍 共102遍 【经典名句分享】 幸...
    周明善阅读 110评论 0 0
  • 下震上坎水雷屯,勿用攸往利建侯。 初九磐桓利居贞,志行正也利建侯。 六二乘马求婚媾,小女子十年乃字。 即鹿无虞入于...
    释博嘉阅读 270评论 0 0
  • 咱们俩这两天到底咋了?你到底咋啦?怎么我感觉你这么生疏,为什么?有什么你和我说呀,我做错了啥你告诉我呀?怎么了么到...
    佳颖永远在一起阅读 149评论 0 0
  • 今天是2018年9月23号 从去年年底离职后自今年8月份 时隔8个月工作后的的第一个法定小长假休息日。此刻的自己才...
    daee3df6c4e8阅读 122评论 0 0