当前位置:首页 > JavaScript

js 实现滑动

2026-03-14 22:50:58JavaScript

实现滑动的基础方法

使用JavaScript实现滑动效果可以通过多种方式完成,最常见的是通过修改元素的transform属性或left/top属性。以下是两种基础实现方式:

修改transform属性

const element = document.getElementById('slider');
element.style.transform = 'translateX(100px)';

修改left属性

const element = document.getElementById('slider');
element.style.left = '100px';

平滑动画的实现

为了使滑动效果更平滑,通常结合CSS的transition属性或使用requestAnimationFrame

CSS Transition

js 实现滑动

#slider {
  transition: transform 0.3s ease;
}
const element = document.getElementById('slider');
element.style.transform = 'translateX(100px)';

requestAnimationFrame

let start = null;
const duration = 300; // 动画持续时间(毫秒)
const element = document.getElementById('slider');

function animate(timestamp) {
  if (!start) start = timestamp;
  const progress = timestamp - start;
  const distance = Math.min(progress / duration, 1) * 100;
  element.style.transform = `translateX(${distance}px)`;
  if (progress < duration) {
    requestAnimationFrame(animate);
  }
}

requestAnimationFrame(animate);

手势滑动的实现

对于移动端或需要手势交互的场景,可以通过监听触摸事件实现滑动。

触摸事件处理

js 实现滑动

const element = document.getElementById('slider');
let startX, currentX;

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

element.addEventListener('touchmove', (e) => {
  currentX = e.touches[0].clientX - startX;
  element.style.transform = `translateX(${currentX}px)`;
});

element.addEventListener('touchend', () => {
  // 滑动结束后的逻辑,如回弹或锁定位置
});

使用第三方库

如果需要更复杂的滑动效果,可以考虑使用第三方库如Swiper.js或Hammer.js。

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>
</div>

<script>
  const swiper = new Swiper('.swiper', {
    loop: true,
  });
</script>

Hammer.js示例

const element = document.getElementById('slider');
const hammer = new Hammer(element);

hammer.on('pan', (e) => {
  element.style.transform = `translateX(${e.deltaX}px)`;
});

标签: js
分享给朋友:

相关文章

js实现抽奖

js实现抽奖

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

jquery js

jquery js

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…