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