转:JavaScript 监听手机端的touch滑动事件(滑动手势)

如何监听移动端滑动手势(上 / 下 / 左 / 右滑动),今天记录下。

 

 1 var startx, starty;
 2  
 3 //获得角度
 4 function getAngle(angx, angy) {
 5     return Math.atan2(angy, angx) * 180 / Math.PI;
 6 };
 7  
 8 //根据起点终点返回方向 1向上滑动 2向下滑动 3向左滑动 4向右滑动 0点击事件
 9 function getDirection(startx, starty, endx, endy) {
10     var angx = endx - startx;
11     var angy = endy - starty;
12     var result = 0;
13  
14     //如果滑动距离太短
15     if (Math.abs(angx) < 2 && Math.abs(angy) < 2) {
16         return result;
17     }
18  
19     var angle = getAngle(angx, angy);
20     if (angle >= -135 && angle <= -45) {
21         result = 1;
22     } else if (angle > 45 && angle < 135) {
23         result = 2;
24     } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
25         result = 3;
26     } else if (angle >= -45 && angle <= 45) {
27         result = 4;
28     }
29     return result;
30 }
31  
32 //手指接触屏幕
33 document.addEventListener("touchstart", function(e){
34     startx = e.touches[0].pageX;
35     starty = e.touches[0].pageY;
36 }, false);
37  
38 //手指离开屏幕
39 document.addEventListener("touchend", function(e) {
40     var endx, endy;
41     endx = e.changedTouches[0].pageX;
42     endy = e.changedTouches[0].pageY;
43     var direction = getDirection(startx, starty, endx, endy);
44     switch (direction) {
45         case 0:
46             alert("点击!");
47             break;
48         case 1:
49             alert("向上!");
50             break;
51         case 2:
52             alert("向下!");
53             break;
54         case 3:
55             alert("向左!");
56             break;
57         case 4:
58             alert("向右!");
59             break;
60         default:
61             alert("点击!");
62             break;
63         }
64 }, false);

Ps:目前监听的是body事件,可自行定义监听DOM元素。

1 document.getElementById("xxx").addEventListener("touchstart", function(){
2     xxxxxxxxxx
3 });

 

 

文章转载自:https://blog.csdn.net/For_My_Own_Voice/article/details/81537292

posted @ 2020-08-04 13:49  傅丹辰cds  阅读(1293)  评论(0编辑  收藏  举报