当前位置:首页 > 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 的绝对值来判断滑动方向。通常设置一个阈值来避免误判。

js 实现手机滑动

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 属性来实现平滑移动。

js 实现手机滑动

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。它提供了丰富的触摸手势支持,包括滑动、缩放、旋转等。

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
分享给朋友:

相关文章

jquery js

jquery js

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

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…