当前位置:首页 > JavaScript

js实现滑动翻页

2026-03-01 05:49:28JavaScript

实现滑动翻页的基本思路

滑动翻页通常通过监听用户手势(如触摸事件或鼠标滚轮事件)来触发页面切换。核心逻辑包括:

js实现滑动翻页

  1. 检测滑动方向(左/右或上/下)
  2. 根据滑动方向切换页面内容
  3. 添加过渡动画效果

基础实现代码示例

// 获取容器元素
const container = document.querySelector('.slider-container');
let startX, moveX;
let currentPage = 0;
const totalPages = 3; // 总页数

// 触摸事件处理
container.addEventListener('touchstart', (e) => {
  startX = e.touches[0].clientX;
});

container.addEventListener('touchmove', (e) => {
  moveX = e.touches[0].clientX;
  e.preventDefault(); // 阻止默认滚动行为
});

container.addEventListener('touchend', () => {
  const diffX = moveX - startX;

  // 向右滑动且不是第一页
  if (diffX > 50 && currentPage > 0) {
    currentPage--;
    updatePage();
  } 
  // 向左滑动且不是最后一页
  else if (diffX < -50 && currentPage < totalPages - 1) {
    currentPage++;
    updatePage();
  }
});

// 更新页面位置
function updatePage() {
  container.style.transform = `translateX(-${currentPage * 100}%)`;
  container.style.transition = 'transform 0.3s ease';
}

鼠标滚轮实现方案

// 滚轮事件处理
container.addEventListener('wheel', (e) => {
  e.preventDefault();

  if (e.deltaY > 0 && currentPage < totalPages - 1) {
    currentPage++;
  } else if (e.deltaY < 0 && currentPage > 0) {
    currentPage--;
  }

  updatePage();
});

CSS样式建议

.slider-container {
  display: flex;
  width: 300%; /* 根据页数调整 */
  height: 100vh;
  overflow: hidden;
}

.slide-page {
  width: 33.33%; /* 100% / 页数 */
  height: 100%;
  flex-shrink: 0;
}

进阶功能实现

添加页面指示器:

// 创建指示器
const indicator = document.createElement('div');
indicator.className = 'page-indicator';
document.body.appendChild(indicator);

// 更新指示器
function updateIndicator() {
  indicator.innerHTML = '';
  for (let i = 0; i < totalPages; i++) {
    const dot = document.createElement('span');
    dot.className = i === currentPage ? 'dot active' : 'dot';
    indicator.appendChild(dot);
  }
}

添加惯性滑动效果:

let velocity = 0;
let lastTime = 0;

container.addEventListener('touchmove', (e) => {
  const now = Date.now();
  const deltaTime = now - lastTime;
  const deltaX = e.touches[0].clientX - startX;

  if (deltaTime > 0) {
    velocity = deltaX / deltaTime;
  }

  lastTime = now;
  startX = e.touches[0].clientX;
});

注意事项

  1. 移动端需添加touch-action: noneCSS属性防止浏览器默认行为
  2. 考虑添加边界检测,防止滑动超出页面范围
  3. 性能优化:使用requestAnimationFrame处理动画
  4. 可访问性:添加键盘导航支持

以上代码可根据实际需求进行调整和扩展,核心原理是通过检测用户输入来改变页面位置。

js实现滑动翻页

标签: 翻页js
分享给朋友:

相关文章

vue 实现翻页

vue 实现翻页

Vue 实现翻页功能 翻页功能通常用于数据分页展示,可以通过 Vue 结合分页逻辑实现。以下是常见的实现方法: 1. 基础数据分页 定义一个数据数组和分页参数,通过计算属性实现分页逻辑。…

vue实现翻页

vue实现翻页

Vue实现翻页功能 翻页功能通常结合后端API分页数据实现,以下是基于Vue 2或Vue 3的实现方案: 基础数据准备 需要定义当前页码、每页条数、总数据量等核心变量: data() {…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…