当前位置:首页 > 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 优化滑动动画性能。

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

JS如何实现左右滑动

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

相关文章

vue如何实现

vue如何实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是几种常见的实现方式: 组件化开发 使用 Vue 的单文件组件(.vue 文件)结构,将 UI 拆分为可复用…

vue如何实现冒泡

vue如何实现冒泡

Vue 实现冒泡排序的步骤 在 Vue 中实现冒泡排序,可以通过数据绑定和计算属性来动态展示排序过程。以下是一个完整的实现示例。 示例代码 <template> <div&g…

vue如何实现两栏布局

vue如何实现两栏布局

使用Flexbox实现两栏布局 Flexbox是CSS3中强大的布局方式,可以轻松实现两栏布局。在Vue中可以直接在组件的style标签中使用。 <template> <div…

php如何实现静态化

php如何实现静态化

PHP 实现静态化的方法 使用 ob_start() 和 ob_get_contents() 利用 PHP 的输出缓冲功能捕获动态生成的页面内容,将其保存为静态文件。这种方法适用于内容不频繁变化的页面…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

vue如何实现拖动

vue如何实现拖动

Vue 实现拖动的常用方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性和相关事件实现拖动功能。 <template>…