js移动端滑动事件

Posted webwrangler

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js移动端滑动事件相关的知识,希望对你有一定的参考价值。

 1 <div id="box" style="width:100%;height:100%;border:1px solid red;"></div>
 2 
 3 <script>
 4     //定义变量,用于记录坐标和角度
 5     var startx,starty,movex,movey,endx,endy,nx,ny,angle;
 6     //开始触摸函数,event为触摸对象
 7     function touchs(event){
 8         event.preventDefault();//阻止浏览器默认滚动事件
 9         var box = document.getElementById(box);//获取DOM标签
10         if(event.type=="touchstart"){//通过if语句判断event.type执行了哪个触摸事件
11             console.log(开始);
12             var touch = event.touches[0];//获取开始的位置数组的第一个触摸位置
13             startx = Math.floor(touch.pageX);//获取第一个坐标的X轴
14             starty = Math.floor(touch.pageY);//获取第一个坐标的Y轴
15         }else if(event.type=="touchmove"){//触摸中的坐标获取
16             console.log(滑动中);
17             var touch = event.touches[0];
18             movex = Math.floor(touch.pageX);
19             movey = Math.floor(touch.pageY);
20         }else if(event.type == "touchend" || event.type == "touchcancel"){//当手指离开屏幕或系统取消触摸事件的时候
21             endx = Math.floor(event.changedTouches[0].pageX);//获取最后的坐标位置
22             endy = Math.floor(event.changedTouches[0].pageY);
23             console.log(结束);
24             nx = endx-startx;//获取开始位置和离开位置的距离
25             ny = endy-starty;
26             //通过坐标计算角度公式 Math.atan2(y,x)*180/Math.PI
27             angle = Math.atan2(ny, nx) * 180 / Math.PI;
28             if(Math.abs(nx)<=1 ||Math.abs(ny)<=1){
29                 return false;
30                 console.log(滑动距离太小);
31             }
32             //通过滑动的角度判断触摸的方向
33             if(angle<45 && angle>=-45){
34                 alert(右滑动);
35                 return false;
36             }else if(angle<135 && angle>=45){
37                 alert(下滑动);
38                 return false;
39             }else if((angle<=180 && angle>=135) || (angle>=-180 && angle<-135 )){
40                 alert(左滑动);
41                 return false;
42             }else if(angle<=-45 && angle >=-135){
43                 alert(上滑动);
44                 return false;
45             }
46         }
47     }
48     
49     //添加触摸事件的监听,并直行自定义触摸函数
50     box.addEventListener(touchstart,touchs,false);
51     box.addEventListener(touchmove,touchs,false);
52     box.addEventListener(touchend,touchs,false);
53     
54 </script>

 

以上是关于js移动端滑动事件的主要内容,如果未能解决你的问题,请参考以下文章

移动端上下滑动事件之--坑爹的touch.js

js移动端滑动事件

js移动端左右滑动事件

js判断移动端手势 上下左右滑动事件

JS绑定触屏滑动事件的问题

移动端js禁止页面滑动与允许滑动