当前位置:首页 > 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

示例代码:

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

相关文章

vue增删改查简单实现

vue增删改查简单实现

基础环境搭建 确保已安装Node.js和Vue CLI。通过以下命令创建Vue项目: npm install -g @vue/cli vue create vue-crud-demo cd vue-…

vue实现表格

vue实现表格

Vue 实现表格的方法 在 Vue 中实现表格可以通过多种方式完成,以下是几种常见的方法: 使用原生 HTML 表格 Vue 可以直接渲染原生 HTML 表格,通过 v-for 动态生成表格行和列…

vue实现多个tab

vue实现多个tab

Vue 实现多个 Tab 的方法 使用动态组件切换 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现多个…

vue实现皮肤切换

vue实现皮肤切换

实现皮肤切换的基本思路 在Vue中实现皮肤切换功能,通常涉及动态修改CSS变量或类名。核心是通过状态管理当前主题,并在组件中应用对应的样式。 使用CSS变量实现主题切换 CSS变量(自定义属性)是实…

vue实现访问量

vue实现访问量

Vue 实现访问量统计的方法 使用前端计数 在 Vue 中可以通过简单的计数器实现页面访问量的统计。这种方法适合小型项目或演示用途。 // 在 Vue 组件中 data() { return…

vue弹幕实现不重叠

vue弹幕实现不重叠

实现 Vue 弹幕不重叠的方法 CSS 定位与动画控制 通过绝对定位和动态计算弹幕轨道高度,确保弹幕在不同轨道上运行。每条弹幕占据固定高度的轨道,避免重叠。 // 弹幕轨道高度计算 const t…