当前位置:首页 > VUE

vue实现回弹效果

2026-02-20 01:13:40VUE

Vue 实现回弹效果的方法

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

使用 CSS 动画

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

<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 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的…

vue 实现jqslidedown

vue 实现jqslidedown

在 Vue 中实现类似 jQuery 的 slideDown 效果,可以通过 Vue 的过渡系统或 CSS 动画结合动态样式绑定来实现。以下是几种实现方式: 使用 Vue Transition 组件…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rou…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mo…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景…

vue实现表白

vue实现表白

Vue 实现表白页面 使用 Vue 可以快速创建一个动态、交互式的表白页面。以下是一个简单的实现方案: 基础结构 创建一个 Vue 项目或单文件组件,包含以下核心部分: <templat…