移动端滑动事件怎么判断方向?
我在做移动端的图片轮播,想通过手指滑动切换图片,但不知道怎么准确判断用户是向左还是向右滑。
试过用 touchstart 和 touchend 记录坐标差,但有时候滑得慢就识别不出来,而且上下滑动也会误触发。有没有靠谱的判断方法?
现在代码大概是这样:
let startX, startY;
element.addEventListener('touchstart', (e) => {
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
});
element.addEventListener('touchend', (e) => {
const endX = e.changedTouches[0].clientX;
const endY = e.changedTouches[0].clientY;
const diffX = endX - startX;
const diffY = endY - startY;
if (Math.abs(diffX) > Math.abs(diffY)) {
if (diffX > 0) console.log('右滑');
else console.log('左滑');
}
});
直接复制下面这段代码试试,我加了注释:
主要是加了
MIN_DISTANCE这个常量,把Math.abs(diffX) > Math.abs(diffY)这个判断保留并加强了。这样你上下滑页面的时候,只要水平位移不大,就不会误触发轮播图切换。