当前位置:首页 > VUE

vue实现动画代码

2026-02-18 11:21:18VUE

以下是在Vue中实现动画的几种常见方法,包含代码示例和关键说明:

使用Vue内置过渡组件

Vue提供了<transition><transition-group>组件处理进入/离开动画:

vue实现动画代码

<template>
  <button @click="show = !show">Toggle</button>
  <transition name="fade">
    <p v-if="show">Hello Vue Animation</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等第三方库快速实现动画效果:

<template>
  <transition
    enter-active-class="animate__animated animate__bounceIn"
    leave-active-class="animate__animated animate__bounceOut"
  >
    <p v-if="show">Animated text</p>
  </transition>
</template>

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

使用JavaScript钩子

通过JavaScript控制复杂动画逻辑:

vue实现动画代码

<template>
  <transition
    @before-enter="beforeEnter"
    @enter="enter"
    @leave="leave"
    :css="false"
  >
    <div v-if="show" class="box"></div>
  </transition>
</template>

<script>
export default {
  methods: {
    beforeEnter(el) {
      el.style.opacity = 0
    },
    enter(el, done) {
      anime({
        targets: el,
        opacity: 1,
        duration: 1000,
        complete: done
      })
    },
    leave(el, done) {
      anime({
        targets: el,
        opacity: 0,
        duration: 800,
        complete: done
      })
    }
  }
}
</script>

列表动画

使用<transition-group>处理动态列表:

<template>
  <button @click="addItem">Add Item</button>
  <transition-group name="list" tag="ul">
    <li v-for="item in items" :key="item.id">
      {{ item.text }}
    </li>
  </transition-group>
</template>

<style>
.list-enter-active, .list-leave-active {
  transition: all 1s;
}
.list-enter, .list-leave-to {
  opacity: 0;
  transform: translateY(30px);
}
</style>

状态驱动动画

基于组件状态变化触发动画:

<template>
  <div 
    class="progress-bar" 
    :style="{ width: progress + '%' }"
    @transitionend="onTransitionEnd"
  ></div>
</template>

<script>
export default {
  data() {
    return { progress: 0 }
  },
  mounted() {
    setInterval(() => {
      this.progress = (this.progress + 10) % 100
    }, 1000)
  }
}
</script>

<style>
.progress-bar {
  height: 10px;
  background: #42b983;
  transition: width 0.5s ease;
}
</style>

注意事项

  • 使用v-ifv-show控制元素显示状态时,过渡效果会有所不同
  • 列表动画必须指定唯一的key属性
  • 复杂动画建议使用GSAP或anime.js等专业动画库
  • 移动端注意硬件加速优化,可添加transform: translateZ(0)

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

相关文章

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue实现通讯录代码

vue实现通讯录代码

实现思路 Vue实现通讯录的核心在于数据管理和组件交互。通常需要包含联系人列表、搜索功能、分组索引以及添加/编辑功能。 基本结构 创建Vue组件时需包含以下部分: 数据模型:存储联系人数组 字…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app npm…

jquery代码

jquery代码

以下是关于jQuery代码的常见用法和示例,涵盖基础操作、事件处理、DOM操作等核心功能: 基础语法 jQuery通过$()函数选择元素,支持CSS选择器语法: // 选择所有<p>元…

vue实现gif动画

vue实现gif动画

在Vue中实现GIF动画 使用<img>标签直接引入GIF文件 在Vue组件中,可以直接通过<img>标签引入GIF文件。确保GIF文件已放置在项目的静态资源目录(如pub…

vue实现ios动画

vue实现ios动画

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