当前位置:首页 > VUE

vue 左右滑动实现

2026-01-14 06:55:19VUE

实现 Vue 左右滑动的常见方法

监听触摸事件
通过 @touchstart@touchmove@touchend 监听手势,计算滑动距离和方向。适合自定义滑动逻辑,需手动处理边界条件和动画效果。

<template>
  <div 
    @touchstart="handleTouchStart"
    @touchmove="handleTouchMove"
    @touchend="handleTouchEnd"
  >
    <!-- 滑动内容 -->
  </div>
</template>

<script>
export default {
  methods: {
    handleTouchStart(e) {
      this.startX = e.touches[0].clientX;
    },
    handleTouchMove(e) {
      this.currentX = e.touches[0].clientX;
      const diff = this.startX - this.currentX;
      if (Math.abs(diff) > 5) { // 滑动阈值
        this.isSwiping = true;
      }
    },
    handleTouchEnd() {
      if (this.isSwiping) {
        // 处理滑动结束逻辑
      }
    }
  }
};
</script>

使用 CSS 过渡或动画
结合 Vue 的 v-bind:stylev-bind:class 动态修改样式,通过 CSS 的 transformtransition 实现平滑滑动效果。

.swipe-container {
  transition: transform 0.3s ease;
}
.swipe-left {
  transform: translateX(-100px);
}
.swipe-right {
  transform: translateX(100px);
}
<template>
  <div 
    :class="{ 'swipe-left': isLeft, 'swipe-right': isRight }"
    @click="handleSwipe"
  >
    <!-- 内容 -->
  </div>
</template>

集成第三方库
使用现成的 Vue 滑动组件库(如 vue-touchswiper-vue)快速实现功能,减少手动处理细节的工作量。

安装 Swiper:

npm install swiper vue-awesome-swiper

示例代码:

vue 左右滑动实现

<template>
  <swiper :options="swiperOptions">
    <swiper-slide>Slide 1</swiper-slide>
    <swiper-slide>Slide 2</swiper-slide>
  </swiper>
</template>

<script>
import { Swiper, SwiperSlide } from 'vue-awesome-swiper';
export default {
  components: { Swiper, SwiperSlide },
  data() {
    return {
      swiperOptions: {
        slidesPerView: 1,
        spaceBetween: 30,
        navigation: {
          nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev'
        }
      }
    };
  }
};
</script>

注意事项

  • 性能优化:避免在 touchmove 中频繁触发重排,可使用 requestAnimationFrame
  • 移动端适配:注意 touch-action CSS 属性,防止与浏览器默认行为冲突。
  • 边界处理:滑动到首项或末项时禁止继续滑动,提供视觉反馈(如弹性动画)。

标签: vue
分享给朋友:

相关文章

vue实现tab标签

vue实现tab标签

Vue 实现 Tab 标签的方法 使用动态组件和 v-for 渲染标签 通过 v-for 循环生成标签页标题,结合 v-bind:class 动态切换激活状态。使用 v-show 或动态组件 <…

vue登录业务的实现

vue登录业务的实现

实现登录业务的基本流程 在Vue中实现登录业务通常涉及前端界面设计、表单验证、API请求交互、状态管理以及路由控制等环节。以下是核心实现步骤: 登录表单设计与验证 创建包含用户名和密码输入框的登录组…

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vue…

vue实现排序

vue实现排序

Vue 实现排序的方法 在 Vue 中实现排序可以通过多种方式完成,以下是一些常见的方法: 使用计算属性排序数组 计算属性非常适合对数据进行排序,因为它会在依赖的数据变化时自动更新。以下是一个示例:…

vue 实现单选

vue 实现单选

使用 v-model 绑定单选值 在 Vue 中,可以通过 v-model 绑定单选按钮的值。定义一个响应式数据(如 selectedOption),并将其与单选按钮的 value 属性关联。…

vue实现github

vue实现github

Vue 实现 GitHub 相关功能 创建 GitHub API 请求 在 Vue 项目中,可以使用 axios 或 fetch 与 GitHub API 进行交互。需要在 GitHub 上创建个人访…