当前位置:首页 > VUE

vue实现滑动翻页

2026-03-28 19:02:56VUE

Vue 实现滑动翻页方案

监听触摸事件
通过 @touchstart@touchmove@touchend 监听手势,记录滑动起始位置和偏移量:

data() {
  return {
    startX: 0,
    moveX: 0
  }
},
methods: {
  handleTouchStart(e) {
    this.startX = e.touches[0].clientX
  },
  handleTouchMove(e) {
    this.moveX = e.touches[0].clientX - this.startX
  },
  handleTouchEnd() {
    if (Math.abs(this.moveX) > 50) { // 滑动阈值
      this.moveX > 0 ? this.prevPage() : this.nextPage()
    }
    this.moveX = 0
  }
}

绑定事件到容器
在模板中为滑动区域添加事件绑定:

vue实现滑动翻页

<div 
  @touchstart="handleTouchStart"
  @touchmove="handleTouchMove"
  @touchend="handleTouchEnd"
  class="swipe-container"
>
  <!-- 翻页内容 -->
</div>

添加过渡动画
使用 Vue 的 <transition> 组件实现平滑翻页效果:

vue实现滑动翻页

<transition :name="transitionName">
  <div :key="currentPage">
    <!-- 当前页内容 -->
  </div>
</transition>
.slide-left-enter-active,
.slide-left-leave-active {
  transition: transform 0.3s ease;
}
.slide-left-enter {
  transform: translateX(100%);
}
.slide-left-leave-to {
  transform: translateX(-100%);
}
/* 反向滑动样式同理 */

分页控制逻辑
维护当前页码并限制边界:

data() {
  return {
    currentPage: 1,
    totalPages: 5
  }
},
methods: {
  nextPage() {
    if (this.currentPage < this.totalPages) {
      this.transitionName = 'slide-left'
      this.currentPage++
    }
  },
  prevPage() {
    if (this.currentPage > 1) {
      this.transitionName = 'slide-right'
      this.currentPage--
    }
  }
}

优化建议

  • 添加 touch-action: pan-y CSS 属性避免浏览器默认行为冲突
  • 使用 requestAnimationFrame 优化滑动性能
  • 移动端适配需考虑 passive: true 事件选项提升滚动性能

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

相关文章

vue实现文字播放栏

vue实现文字播放栏

Vue 实现文字播放栏(跑马灯效果) 方法一:使用 CSS 动画 + Vue 数据绑定 通过 CSS 的 @keyframes 实现动画效果,结合 Vue 的动态数据绑定控制内容。 <tem…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue 实现筛选

vue 实现筛选

实现筛选功能的基本方法 在Vue中实现筛选功能通常涉及以下几个核心步骤: 数据绑定与筛选逻辑 使用v-model绑定筛选条件到Vue实例的数据属性,结合计算属性实现动态筛选: data() {…

vue环境实现

vue环境实现

Vue 环境搭建 安装 Node.js 和 npm Node.js 是运行 Vue 的基础环境,npm 是包管理工具。从 Node.js 官网 下载并安装最新稳定版本。安装完成后,在终端运行以下命令验…

vue实现路径

vue实现路径

Vue 实现路径的方法 在 Vue 中实现路径管理通常涉及 Vue Router 的使用,以下是一些常见的实现方法: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Route…

vue 轮询实现

vue 轮询实现

轮询的基本概念 轮询是一种通过定时向服务器发送请求来获取最新数据的技术。适用于需要实时更新但无法使用WebSocket的场景。 使用setInterval实现轮询 在Vue组件中,可以通过setIn…