H5触摸事件中如何判断用户滑动方向

这次给大家带来H5触摸事件中如何判断用户滑动方向,H5触摸事件中判断用户滑动方向的注意事项有哪些,下面就是实战案例,一起来看一下。

接口

TouchEvent

TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。这类事件用于描述一个或多个触点,使开发者可以检测触点的移动,触点的增加和减少,等等。每 个 Touch 对象代表一个触点; 每个触点都由其位置,大小,形状,压力大小,和目标 element 描述。 TouchList 对象代表多个触点的一个列表.

触摸事件的类型

为了区别触摸相关的状态改变,存在多种类型的触摸事件。可以通过检查触摸事件的 TouchEvent.type 属性来确定当前事件属于哪种类型

touchstart:当用户在触摸平面上放置了一个触点时触发。

touchend:当一个触点被用户从触摸平面上移除(当用户将一个手指离开触摸平面)时触发。

touchmove:当用户在触摸平面上移动触点时触发。

touchcancel:当触点由于某些原因被中断时触发。

判断滑动方向

基本原理就是记录开始滑动(touchStart)和结束滑动(touchEnd)的坐标位置,然后进行相对位置的计算。

touchStart:function(e){    startX = e.touches[0].pageX;    startY = e.touches[0].pageY;    e = e || window.event; },touchEnd:function(e){    const that = this;    endX = e.changedTouches[0].pageX;    endY = e.changedTouches[0].pageY;    that.upOrDown(startX,startY,endX,endY);},upOrDown:function (startX, startY, endX, endY) {    const that = this;    let direction = that.GetSlideDirection(startX, startY, endX, endY);    switch(direction) {      case 0:        console.log("没滑动");        break;      case 1:        console.log("向上");        break;      case 2:        console.log("向下");        break;      case 3:        console.log("向左");        break;      case 4:        console.log("向右");        break;      default:        break;    }  },//根据起点和终点返回方向 1:向上,2:向下,3:向左,4:向右,0:未滑动  GetSlideDirection:function (startX, startY, endX, endY) {    const that = this;    let dy = startY - endY;    let dx = endX - startX;    let result = 0;    //如果滑动距离太短    if(Math.abs(dx) < 2 && Math.abs(dy) = -45 && angle = 45 && angle = -135 && angle = 135 && angle = -180 && angle < -135)) {      result = 3;    }    return result;  },  //返回角度  GetSlideAngle:function (dx, dy) {    return Math.atan2(dy, dx) * 180 / Math.PI;  }

登录后复制

原生JS方法

除了H5新增的方法外,还可以用原生JS判断view的滑动方向,代码如下(可直接运行):

要注意的是chrome对document.body.scrollTop一直是0,需要改成document.documentElement.scrollTop

     脚本之家(jb51.net)      p {      border: 1px solid black;      width: 200px;      height: 100px;      overflow: scroll;    }  

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

function scroll( fn ) { var beforeScrollTop = document.documentElement.scrollTop, fn = fn || function() {}; console.log('beforeScrollTop',beforeScrollTop); window.addEventListener("scroll", function() { var afterScrollTop = document.documentElement.scrollTop, delta = afterScrollTop - beforeScrollTop; console.log('beforeScrollTop',beforeScrollTop); console.log('afterScrollTop',afterScrollTop); if( delta === 0 ) return false; fn( delta > 0 ? "down" : "up" ); beforeScrollTop = afterScrollTop; }, false); } scroll(function(direction) { console.log(direction) });

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

怎样对邮箱地址格式进行验证

CSS浮动使用技巧

以上就是H5触摸事件中如何判断用户滑动方向的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2896854.html

(0)
上一篇 2025年3月10日 23:17:16
下一篇 2025年3月1日 17:39:07

AD推荐 黄金广告位招租... 更多推荐

发表回复

登录后才能评论