当前位置:首页 > VUE

vue怎么实现滑动

2026-03-08 02:08:58VUE

Vue 实现滑动效果的方法

使用原生 CSS 实现滑动

通过 CSS 的 transitiontransform 属性实现基础滑动效果。适用于简单的元素移动需求。

<template>
  <div class="slider" @click="toggleSlide">
    <div class="slide-content" :class="{ 'active': isActive }">
      滑动内容
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: false
    };
  },
  methods: {
    toggleSlide() {
      this.isActive = !this.isActive;
    }
  }
};
</script>

<style>
.slide-content {
  transition: transform 0.3s ease;
  transform: translateX(-100%);
}
.slide-content.active {
  transform: translateX(0);
}
</style>

使用第三方库(如 Swiper)

对于复杂的滑动需求(如轮播图),推荐使用 Swiper.js。需先安装依赖:

npm install swiper

示例代码:

<template>
  <swiper :options="swiperOptions">
    <swiper-slide v-for="(item, index) in slides" :key="index">
      {{ item }}
    </swiper-slide>
  </swiper>
</template>

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

export default {
  components: { Swiper, SwiperSlide },
  data() {
    return {
      slides: ['Slide 1', 'Slide 2', 'Slide 3'],
      swiperOptions: {
        loop: true,
        pagination: { el: '.swiper-pagination' }
      }
    };
  }
};
</script>

手势滑动(如 Hammer.js)

实现手势控制的滑动效果,需安装 Hammer.js:

npm install hammerjs

示例代码:

<template>
  <div ref="slider" class="slider">
    滑动区域
  </div>
</template>

<script>
import Hammer from 'hammerjs';

export default {
  mounted() {
    const slider = this.$refs.slider;
    const hammer = new Hammer(slider);
    hammer.on('swipeleft', () => console.log('向左滑动'));
    hammer.on('swiperight', () => console.log('向右滑动'));
  }
};
</script>

移动端优化(touch 事件)

针对移动端自定义滑动逻辑,监听 touchstarttouchmovetouchend 事件:

vue怎么实现滑动

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

<script>
export default {
  data() {
    return {
      startX: 0,
      endX: 0
    };
  },
  methods: {
    handleTouchStart(e) {
      this.startX = e.touches[0].clientX;
    },
    handleTouchMove(e) {
      this.endX = e.touches[0].clientX;
    },
    handleTouchEnd() {
      if (this.startX - this.endX > 50) {
        console.log('向左滑动');
      } else if (this.endX - this.startX > 50) {
        console.log('向右滑动');
      }
    }
  }
};
</script>

注意事项

  1. 性能优化:避免在 touchmove 中执行复杂计算,防止页面卡顿。
  2. 兼容性:第三方库需检查对目标浏览器的支持情况。
  3. 无障碍:滑动组件应提供键盘导航支持(如箭头键控制)。

标签: vue
分享给朋友:

相关文章

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Refl…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue实现水印

vue实现水印

Vue 实现水印的方法 使用 CSS 背景图 通过 CSS 的 background-image 和 background-repeat 属性实现水印效果。创建一个包含水印文本的 Canvas,将其转…

vue mvvm 实现

vue mvvm 实现

Vue MVVM 实现原理 Vue.js 的 MVVM(Model-View-ViewModel)架构通过数据绑定和响应式系统实现视图与数据的自动同步。以下是其核心实现机制: 数据劫持与响应式系统…

vue实现tip

vue实现tip

Vue实现Tooltip的方法 使用Vue实现Tooltip可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML的title属性 在Vue模板中直接使用HTML的title属性是最简单的实…