当前位置:首页 > JavaScript

JS如何实现左右滑动

2026-01-30 19:35:56JavaScript

实现左右滑动的方法

使用 touchstarttouchmovetouchend 事件监听触摸操作,计算滑动距离和方向。

let startX, moveX;

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

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

  if (Math.abs(diffX) > 10) {
    e.preventDefault(); // 阻止默认滚动行为
    if (diffX > 0) {
      console.log('向右滑动');
    } else {
      console.log('向左滑动');
    }
  }
});

element.addEventListener('touchend', () => {
  startX = null;
  moveX = null;
});

使用 CSS 过渡动画

结合 CSS 的 transformtransition 属性实现平滑滑动效果。

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

element.addEventListener('touchend', (e) => {
  const diffX = moveX - startX;
  if (Math.abs(diffX) > 50) {
    // 滑动距离超过阈值,触发完整滑动
    element.style.transform = diffX > 0 ? 'translateX(100%)' : 'translateX(-100%)';
  } else {
    // 回弹到原位
    element.style.transform = 'translateX(0)';
  }
});

使用第三方库

使用 Swiper.js 等成熟库快速实现滑动效果。

<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>

<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    <div class="swiper-slide">Slide 3</div>
  </div>
</div>
const swiper = new Swiper('.swiper', {
  direction: 'horizontal',
  loop: true,
});

兼容鼠标事件

在支持触摸的设备之外,添加鼠标事件支持。

element.addEventListener('mousedown', (e) => {
  startX = e.clientX;
  document.addEventListener('mousemove', onMouseMove);
  document.addEventListener('mouseup', onMouseUp);
});

function onMouseMove(e) {
  moveX = e.clientX;
  const diffX = moveX - startX;
  element.style.transform = `translateX(${diffX}px)`;
}

function onMouseUp() {
  document.removeEventListener('mousemove', onMouseMove);
  document.removeEventListener('mouseup', onMouseUp);
  // 处理滑动结束逻辑
}

性能优化

使用 requestAnimationFrame 优化滑动动画性能。

JS如何实现左右滑动

function animateSlide(diffX) {
  requestAnimationFrame(() => {
    element.style.transform = `translateX(${diffX}px)`;
  });
}

标签: 如何实现JS
分享给朋友:

相关文章

vue如何实现登录

vue如何实现登录

实现登录功能的基本步骤 使用Vue实现登录功能通常需要结合后端API、状态管理以及路由控制。以下是常见的实现方式: 创建登录表单组件 在Vue组件中构建包含用户名和密码输入框的表单: <te…

如何实现翻页式h5

如何实现翻页式h5

翻页式H5的实现方法 翻页式H5通常指通过滑动或点击切换页面的交互形式,常用于营销活动、产品展示等场景。以下是几种常见的实现方式: 使用HTML5和CSS3实现基础翻页 通过CSS3的transfo…

vue如何实现轮询

vue如何实现轮询

实现轮询的方法 在Vue中实现轮询可以通过以下几种方式完成,具体选择取决于项目需求和场景。 使用 setInterval 通过 setInterval 定时调用接口或执行任务,适合简单的轮询场景。…

vue如何实现渲染

vue如何实现渲染

Vue 渲染实现方法 Vue 的渲染主要通过模板编译、虚拟 DOM 和响应式系统实现。以下是具体实现方式: 模板编译 Vue 模板会被编译成渲染函数。模板可以写在 .vue 文件的 <temp…

vue 如何实现返回

vue 如何实现返回

Vue 实现返回功能的方法 使用 router.go(-1) 在 Vue 中可以通过 Vue Router 的 go 方法实现返回上一页的功能。在需要触发返回的按钮或方法中调用 this.$route…

vue如何实现同步

vue如何实现同步

Vue 同步实现方法 在 Vue 中实现同步操作通常涉及处理异步任务(如 API 调用、定时器等)的同步化。以下是几种常见方法: 使用 async/await 通过 async/await 语法可以…