移动端滑动手势怎么判断方向和距离?
我在做移动端的图片轮播,想通过 touch 事件实现左右滑动切换。但不知道怎么准确判断用户是向左还是向右滑,而且滑动距离太小的时候不应该触发切换。
我试过记录 touchstart 和 touchend 的 clientX 差值,但有时候会误判,比如上下滑动也会触发。有没有更可靠的方法?
let startX, endX;
element.addEventListener('touchstart', (e) => {
startX = e.touches[0].clientX;
});
element.addEventListener('touchend', (e) => {
endX = e.changedTouches[0].clientX;
const diff = startX - endX;
if (Math.abs(diff) > 50) {
if (diff > 0) console.log('左滑');
else console.log('右滑');
}
});
这样加了Y轴判断和防抖处理,误触少多了。