当前位置:首页 > 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
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

jquery js

jquery js

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