当前位置:首页 > JavaScript

js 实现手机滑动

2026-03-01 01:14:47JavaScript

监听触摸事件

使用 touchstarttouchmovetouchend 事件来检测用户触摸屏幕的动作。这些事件提供了触摸点的位置信息,可用于计算滑动方向和距离。

let startX, startY;

element.addEventListener('touchstart', (e) => {
  startX = e.touches[0].clientX;
  startY = e.touches[0].clientY;
});

element.addEventListener('touchmove', (e) => {
  const moveX = e.touches[0].clientX;
  const moveY = e.touches[0].clientY;
  const diffX = moveX - startX;
  const diffY = moveY - startY;
});

计算滑动方向

通过比较 diffXdiffY 的绝对值来判断滑动方向。通常设置一个阈值来避免误判。

element.addEventListener('touchend', (e) => {
  const diffX = e.changedTouches[0].clientX - startX;
  const diffY = e.changedTouches[0].clientY - startY;

  if (Math.abs(diffX) > Math.abs(diffY)) {
    if (diffX > 0) {
      console.log('向右滑动');
    } else {
      console.log('向左滑动');
    }
  } else {
    if (diffY > 0) {
      console.log('向下滑动');
    } else {
      console.log('向上滑动');
    }
  }
});

实现滑动动画

使用 CSS 过渡或 JavaScript 动画来实现滑动效果。可以通过修改元素的 transform 属性来实现平滑移动。

element.addEventListener('touchmove', (e) => {
  const moveX = e.touches[0].clientX - startX;
  element.style.transform = `translateX(${moveX}px)`;
});

element.addEventListener('touchend', (e) => {
  const moveX = e.changedTouches[0].clientX - startX;
  if (Math.abs(moveX) > 100) {
    element.style.transition = 'transform 0.3s ease';
    element.style.transform = moveX > 0 ? 'translateX(100%)' : 'translateX(-100%)';
  } else {
    element.style.transition = 'transform 0.3s ease';
    element.style.transform = 'translateX(0)';
  }
});

防止页面滚动

在滑动元素时,可能需要阻止默认的页面滚动行为。可以通过调用 e.preventDefault() 来实现。

element.addEventListener('touchmove', (e) => {
  e.preventDefault();
  const moveX = e.touches[0].clientX - startX;
  element.style.transform = `translateX(${moveX}px)`;
});

使用第三方库

如果不想手动实现滑动逻辑,可以使用现成的库如 Hammer.js。它提供了丰富的触摸手势支持,包括滑动、缩放、旋转等。

js 实现手机滑动

const hammer = new Hammer(element);
hammer.on('swipe', (e) => {
  if (e.direction === Hammer.DIRECTION_LEFT) {
    console.log('向左滑动');
  } else if (e.direction === Hammer.DIRECTION_RIGHT) {
    console.log('向右滑动');
  }
});

标签: 手机js
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…