当前位置:首页 > VUE

vue实现回弹效果

2026-02-20 01:13:40VUE

Vue 实现回弹效果的方法

回弹效果(Bounce Effect)常见于移动端交互,可以通过 CSS 动画或第三方库实现。以下是几种实现方式:

vue实现回弹效果

使用 CSS 动画

通过 Vue 绑定样式或类名,结合 CSS @keyframestransition 实现回弹效果。

vue实现回弹效果

<template>
  <div 
    class="box" 
    :style="{ transform: bounceScale }"
    @click="startBounce"
  >
    点击回弹
  </div>
</template>

<script>
export default {
  data() {
    return {
      bounceScale: 'scale(1)'
    }
  },
  methods: {
    startBounce() {
      this.bounceScale = 'scale(1.2)'
      setTimeout(() => {
        this.bounceScale = 'scale(0.9)'
      }, 150)
      setTimeout(() => {
        this.bounceScale = 'scale(1)'
      }, 300)
    }
  }
}
</script>

<style>
.box {
  width: 100px;
  height: 100px;
  background: #42b983;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.3s cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
</style>

使用 GreenSock (GSAP)

GSAP 提供更强大的动画控制,适合复杂回弹效果。

<template>
  <div ref="box" class="box" @click="bounce">
    点击回弹
  </div>
</template>

<script>
import { gsap } from 'gsap'

export default {
  methods: {
    bounce() {
      gsap.to(this.$refs.box, {
        scale: 1.2,
        duration: 0.2,
        yoyo: true,
        repeat: 1,
        ease: "bounce.out"
      })
    }
  }
}
</script>

使用 Vue Transition

Vue 的 <transition> 组件结合 CSS 实现入场/离场回弹。

<template>
  <button @click="show = !show">切换</button>
  <transition name="bounce">
    <div v-if="show" class="box">回弹内容</div>
  </transition>
</template>

<style>
.bounce-enter-active {
  animation: bounce-in 0.5s;
}
.bounce-leave-active {
  animation: bounce-in 0.5s reverse;
}
@keyframes bounce-in {
  0% { transform: scale(0); }
  50% { transform: scale(1.25); }
  100% { transform: scale(1); }
}
</style>

实现要点

  • 缓动函数:使用 cubic-bezier(0.68, -0.55, 0.27, 1.55) 或预设的 ease-out-back 增强回弹感
  • 性能优化:优先使用 CSS 硬件加速(如 transform 而非 margin/top
  • 移动端适配:添加 touch-action 避免与浏览器手势冲突

以上方法可根据项目需求选择,CSS 方案轻量,GSAP 适合复杂动画,Vue Transition 适合组件级动画。

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

相关文章

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue tab实现

vue tab实现

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

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

vue实现eventbus

vue实现eventbus

Vue 中实现 EventBus 在 Vue 中,EventBus 是一种跨组件通信的机制,尤其适用于非父子组件之间的数据传递。以下是实现 EventBus 的几种方法: 方法一:使用 Vue 实例…

vue实现投票

vue实现投票

Vue实现投票功能 数据准备 在Vue组件的data中定义投票相关数据,包括选项列表和当前选中状态: data() { return { options: [ { id: 1…