当前位置:首页 > VUE

vue 左右滑动实现

2026-03-28 09:45:52VUE

Vue 实现左右滑动的方案

使用 touch 事件监听

通过监听 touchstarttouchmovetouchend 事件来实现滑动效果。

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

<script>
export default {
  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) {
        if (this.moveX > 0) {
          // 向右滑动逻辑
        } else {
          // 向左滑动逻辑
        }
      }
    }
  }
}
</script>

使用第三方库

引入 swipervue-awesome-swiper 库可以快速实现滑动效果。

安装 swiper:

npm install swiper vue-awesome-swiper

使用示例:

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

<script>
import { Swiper, SwiperSlide } from 'vue-awesome-swiper'
import 'swiper/css/swiper.css'

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

使用 CSS 过渡效果

结合 Vue 的过渡系统实现平滑滑动动画。

<template>
  <div class="slider-container">
    <div 
      class="slider-content"
      :style="{ transform: `translateX(${offsetX}px)` }"
    >
      <!-- 滑动内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      offsetX: 0
    }
  },
  methods: {
    slide(direction) {
      const distance = 300 // 滑动距离
      this.offsetX = direction === 'left' 
        ? this.offsetX - distance 
        : this.offsetX + distance
    }
  }
}
</script>

<style>
.slider-container {
  overflow: hidden;
}
.slider-content {
  display: flex;
  transition: transform 0.3s ease;
}
</style>

结合手势库

使用 hammer.js 等手势库可以更便捷地处理复杂手势。

安装:

npm install hammerjs

使用示例:

vue 左右滑动实现

<template>
  <div ref="swipeElement"></div>
</template>

<script>
import Hammer from 'hammerjs'

export default {
  mounted() {
    const hammer = new Hammer(this.$refs.swipeElement)
    hammer.on('swipeleft', () => {
      // 左滑处理
    })
    hammer.on('swiperight', () => {
      // 右滑处理
    })
  }
}
</script>

选择合适的方法取决于项目需求复杂度。简单交互可使用原生事件,复杂场景推荐使用成熟库如 swiperhammer.js

标签: vue
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue router 实现

vue router 实现

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

vue mvvm实现

vue mvvm实现

Vue MVVM 实现原理 Vue.js 是一个基于 MVVM(Model-View-ViewModel)模式的框架,其核心是通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 M…

vue实现京东

vue实现京东

Vue 实现京东电商网站的关键步骤 项目搭建与基础配置 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 管理路由,Vuex/Pinia 管理状态。配置基础 UI 框架如 E…

vue实现队列

vue实现队列

Vue 实现队列功能 在 Vue 中实现队列功能可以通过多种方式完成,以下是几种常见的方法: 使用数组模拟队列 队列遵循先进先出(FIFO)原则,可以用数组的 push 和 shift 方法模拟入队…

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…