当前位置:首页 > VUE

vue实现动画代码

2026-01-17 18:53:42VUE

Vue 动画实现方法

Vue 提供了多种方式实现动画效果,包括内置过渡组件、CSS 动画库集成以及第三方动画库结合。以下是几种常见实现方法:

使用 Vue 内置过渡组件

Vue 的 <transition><transition-group> 组件可直接实现基础动画效果,通过 CSS 类名或 JavaScript 钩子控制动画过程。

<template>
  <button @click="show = !show">Toggle</button>
  <transition name="fade">
    <p v-if="show">Hello Vue!</p>
  </transition>
</template>

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

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

结合 CSS 动画库(如 Animate.css)

通过引入第三方 CSS 动画库,快速实现复杂动画效果。

<template>
  <button @click="show = !show">Toggle</button>
  <transition
    enter-active-class="animate__animated animate__bounceIn"
    leave-active-class="animate__animated animate__bounceOut"
  >
    <p v-if="show">Animate.css 效果</p>
  </transition>
</template>

<script>
import 'animate.css'
export default {
  data() {
    return { show: true }
  }
}
</script>

使用 JavaScript 动画钩子

通过 transition 组件的 JavaScript 钩子实现更复杂的动画逻辑。

<template>
  <button @click="show = !show">Toggle</button>
  <transition
    @before-enter="beforeEnter"
    @enter="enter"
    @leave="leave"
    :css="false"
  >
    <p v-if="show">JavaScript 动画</p>
  </transition>
</template>

<script>
export default {
  data() {
    return { show: true }
  },
  methods: {
    beforeEnter(el) {
      el.style.opacity = 0
    },
    enter(el, done) {
      let opacity = 0
      const interval = setInterval(() => {
        opacity += 0.1
        el.style.opacity = opacity
        if (opacity >= 1) {
          clearInterval(interval)
          done()
        }
      }, 100)
    },
    leave(el, done) {
      let opacity = 1
      const interval = setInterval(() => {
        opacity -= 0.1
        el.style.opacity = opacity
        if (opacity <= 0) {
          clearInterval(interval)
          done()
        }
      }, 100)
    }
  }
}
</script>

第三方动画库(如 GSAP)

对于高级动画需求,可结合 GSAP 等专业动画库。

vue实现动画代码

<template>
  <button @click="show = !show">Toggle</button>
  <transition @enter="enter" @leave="leave" :css="false">
    <p v-if="show">GSAP 动画</p>
  </transition>
</template>

<script>
import gsap from 'gsap'
export default {
  data() {
    return { show: true }
  },
  methods: {
    enter(el, done) {
      gsap.from(el, {
        duration: 1,
        opacity: 0,
        y: 50,
        onComplete: done
      })
    },
    leave(el, done) {
      gsap.to(el, {
        duration: 1,
        opacity: 0,
        y: -50,
        onComplete: done
      })
    }
  }
}
</script>

注意事项

  • 列表动画需使用 <transition-group> 并设置 key 属性
  • 性能优化:避免频繁触发复杂动画,可使用 will-change CSS 属性
  • 移动端适配:注意硬件加速和动画帧率问题

标签: 代码动画
分享给朋友:

相关文章

vue实现ios动画

vue实现ios动画

Vue 实现 iOS 动画的方法 使用 CSS Transition 和 Vue 的过渡系统 Vue 提供了内置的过渡系统,可以通过 <transition> 组件实现动画效果。结合 CS…

淘宝css代码制作

淘宝css代码制作

在淘宝店铺装修中,CSS代码用于自定义页面样式,提升视觉体验。以下是关键方法和注意事项: 自定义模块样式 通过淘宝旺铺的“自定义模块”功能,可以插入CSS代码。代码需包裹在<style>…

vue实现路由动画

vue实现路由动画

路由动画的实现方法 在Vue中实现路由动画通常结合<transition>组件和Vue Router的导航守卫。以下是几种常见实现方式: 基础过渡动画 <template>…

vue实现网站代码

vue实现网站代码

Vue 实现网站代码的基本步骤 安装 Vue.js 通过 npm 或 CDN 引入 Vue.js。使用 npm 安装:npm install vue。或者直接在 HTML 文件中引入 Vue CDN:…

vue实现动画效果

vue实现动画效果

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

代码雨实现vue

代码雨实现vue

实现代码雨效果(Vue版) 使用Vue实现代码雨效果可以通过Canvas绘制结合动画帧实现。以下是完整实现方案: 核心代码结构 <template> <div class="c…