当前位置:首页 > VUE

vue 实现滑动效果

2026-02-18 08:39:47VUE

Vue 实现滑动效果的常见方法

使用 CSS Transition 或 Animation

通过 Vue 的 v-bind:classv-bind:style 动态绑定样式,结合 CSS 的 transitionanimation 属性实现滑动效果。

<template>
  <div 
    class="slider" 
    :style="{ transform: `translateX(${offset}px)` }"
  ></div>
</template>

<script>
export default {
  data() {
    return {
      offset: 0
    };
  },
  methods: {
    slide() {
      this.offset += 100; // 每次滑动 100px
    }
  }
};
</script>

<style>
.slider {
  transition: transform 0.3s ease;
  width: 100px;
  height: 100px;
  background: blue;
}
</style>

使用 Vue Transition 组件

Vue 内置的 <transition> 组件可以方便地实现进入/离开的滑动动画。

<template>
  <button @click="show = !show">Toggle Slide</button>
  <transition name="slide">
    <div v-if="show" class="box"></div>
  </transition>
</template>

<script>
export default {
  data() {
    return {
      show: true
    };
  }
};
</script>

<style>
.slide-enter-active, .slide-leave-active {
  transition: transform 0.5s;
}
.slide-enter, .slide-leave-to {
  transform: translateX(100%);
}
.box {
  width: 100px;
  height: 100px;
  background: red;
}
</style>

使用第三方库(如 Swiper.js)

对于复杂的滑动场景(如轮播图),可以直接集成 Swiper 等专业库。

<template>
  <div class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide" v-for="item in 5" :key="item">
        Slide {{ item }}
      </div>
    </div>
  </div>
</template>

<script>
import Swiper from 'swiper';
import 'swiper/css/swiper.css';

export default {
  mounted() {
    new Swiper('.swiper-container', {
      loop: true,
      autoplay: {
        delay: 3000,
      },
    });
  }
};
</script>

手势滑动(如 hammer.js)

通过手势库实现触摸滑动交互。

<template>
  <div ref="panElement" class="pan-area"></div>
</template>

<script>
import Hammer from 'hammerjs';

export default {
  mounted() {
    const hammer = new Hammer(this.$refs.panElement);
    hammer.on('pan', (event) => {
      this.$refs.panElement.style.transform = `translateX(${event.deltaX}px)`;
    });
  }
};
</script>

<style>
.pan-area {
  width: 200px;
  height: 200px;
  background: green;
  touch-action: none;
}
</style>

关键注意事项

  • 性能优化:对于频繁触发的滑动(如跟随鼠标),使用 requestAnimationFrame 避免卡顿。
  • 移动端适配:触摸事件需添加 touch-action CSS 属性防止浏览器默认行为冲突。
  • 动画流畅性:优先使用 transformopacity 属性,这些属性不会触发重排。

vue 实现滑动效果

标签: 效果vue
分享给朋友:

相关文章

vue怎么实现动画

vue怎么实现动画

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,包括内置过渡系统、第三方库集成以及 CSS 动画。以下是常见实现方法: 使用 Vue 过渡系统 通过 <transition>…

vue前端实现下载进度

vue前端实现下载进度

实现下载进度条的基本思路 在Vue中实现下载进度条,通常需要结合XMLHttpRequest或Fetch API来监听下载进度事件。通过计算已下载数据与总数据的比例,动态更新进度条的显示。 使用X…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现…

vue交互实现

vue交互实现

Vue 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表…

vue实现tablegrid

vue实现tablegrid

Vue 实现 TableGrid 的方法 使用 Element UI 的 Table 组件 Element UI 提供了强大的 Table 组件,可以快速实现表格布局。安装 Element UI 后,…

vue实现详情

vue实现详情

Vue 实现详情页的常见方法 使用动态路由 在 Vue Router 中配置动态路由参数,通过 $route.params 获取详情 ID。示例路由配置: { path: '/detail/:…