如何处理手机上的滑动事件

400 阅读1分钟

背景

  • 当用户在手机端操作时,我如何知道他是往哪个方向滑动的?

分析:

因为js上没有现成的监听左滑,右滑的事件,所以用户往哪个方向滑动是需要靠自己写代码判断。虽然js没有监听方向滑动的事件,但监听触摸的事件是存在的。

touchstart: 触摸开始
touchmove : 触摸并移动手指
touchend  : 触摸结束,即手机离开屏幕

首先,页面中的坐标系不同于平常所学的数学坐标系,它是以页面左上角为原点,向右和向下分别为x,y轴的正方向。

假设触摸开始的坐标为: (x1,y1), 触摸结束的坐标为: (x2, y2) 。

若 x2-x1>0 , 则认为是往右滑动,反之往左

若y2-y1>0 ,则认为是往下滑动,反之往上。

但用户实际使用时不可能严格按照水平或垂直方向滑动,他们往往是无规律的,带一定角度的滑动。

比如:当用户按下图绿箭头方向滑动的时候,如何判定它是往左,还是往下滑动?

这里需要获取它相比一开始的时候,在横纵方向上移动的距离。即 x2-x1, y2-y1

取这两个差值的绝对值,若x差值的绝对值大于y差值的绝对值,则判定其是横向的滑动,反之,则判定其是纵向的滑动。

若判定是横向的滑动,再看x2-x1是大于还是小于0,来具体判定是右滑还是左滑。纵向的方向判定同理。