当前位置:首页 > 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 属性实现平滑滑动效果。

JS如何实现左右滑动

.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 等成熟库快速实现滑动效果。

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

相关文章

vue如何实现重新实现主题

vue如何实现重新实现主题

动态主题切换的实现 在Vue中实现动态主题切换,通常需要结合CSS变量和状态管理。通过修改根元素的CSS变量值,可以全局改变应用的主题样式。 定义主题相关的CSS变量在根元素中: :root {…

vue如何实现高亮

vue如何实现高亮

实现文本高亮的方法 在Vue中实现文本高亮通常可以通过以下几种方式完成: 使用v-html指令结合字符串替换 通过将需要高亮的文本部分替换为HTML标签(如<span class="highl…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…

vue权限如何实现

vue权限如何实现

Vue 权限实现方案 在 Vue 项目中实现权限控制通常涉及路由权限、按钮权限和接口权限三个方面。以下是具体实现方法: 路由权限控制 路由权限通常通过动态路由和全局路由守卫实现。用户登录后获取权限列…

vue如何实现路由

vue如何实现路由

路由基础配置 在Vue中实现路由通常使用Vue Router库。安装Vue Router后,在项目中创建路由配置文件(如router/index.js),定义路由路径与组件的映射关系: import…

vue如何实现 退出

vue如何实现 退出

退出登录的实现方法 在Vue中实现退出登录功能通常需要结合前端和后端的逻辑。以下是常见的实现步骤: 清除本地存储的认证信息 使用localStorage或sessionStorage清除存储的tok…