当前位置:首页 > VUE

vue实现动画代码

2026-01-17 18:53:42VUE

Vue 动画实现方法

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

使用 Vue 内置过渡组件

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

vue实现动画代码

<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 动画库,快速实现复杂动画效果。

vue实现动画代码

<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 等专业动画库。

<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实现动画

vue实现动画

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要通过内置组件和 CSS 过渡/动画实现。 使用 <transition> 组件 Vue 的 <transition&g…

vue动画实现原理

vue动画实现原理

Vue动画实现原理 Vue的动画系统基于CSS过渡和动画,结合Vue的响应式系统,提供声明式的方式管理元素进入/离开的动画效果。核心原理分为以下几个部分: 过渡类名自动应用 Vue在元素插入…

css3动画制作工具

css3动画制作工具

CSS3 动画制作工具推荐 以下是几款流行的工具和资源,可帮助快速创建CSS3动画,涵盖可视化工具、代码生成器和学习平台。 可视化工具 1. Animate.css 提供预定义的CSS动画…

elementui动画

elementui动画

ElementUI 动画使用指南 ElementUI 提供了内置的过渡动画效果,主要通过 Vue 的 <transition> 组件实现。以下为常见动画应用方法: 淡入淡出动画 通过 e…

vue实现border动画

vue实现border动画

实现边框动画的方法 在Vue中实现边框动画可以通过CSS动画或过渡效果结合Vue的动态样式绑定来实现。以下是几种常见的方法: 使用CSS过渡和Vue的class绑定 通过动态添加或移除CSS类来触发…

vue中实现动画

vue中实现动画

vue中实现动画的方法 Vue提供了多种实现动画的方式,主要依赖于内置的<transition>和<transition-group>组件,以及结合CSS或JavaScript…