当前位置:首页 > 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 CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project c…

vue扫码登录代码实现

vue扫码登录代码实现

Vue 扫码登录实现方案 准备工作 确保项目已安装 Vue 2/3 及相关依赖,需要后端提供生成二维码和验证扫码状态的接口。 生成二维码 使用 qrcode 库生成登录二维码,需调用后端接口获取唯一…

vue 实现动画效果

vue 实现动画效果

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

vue实现动画插件

vue实现动画插件

Vue 动画插件实现方案 Vue 提供了多种实现动画的方式,可以通过内置的 <transition> 组件或第三方插件来实现复杂的动画效果。 使用 Vue 内置 <transiti…

vue过渡动画实现

vue过渡动画实现

Vue 过渡动画实现方法 使用 <transition> 组件 Vue 提供了内置的 <transition> 组件,用于在元素插入、更新或移除时应用过渡效果。通过添加 CSS…

vue代码怎么实现拼音

vue代码怎么实现拼音

实现拼音功能的方法 在Vue中实现拼音功能,可以通过拼音转换库将中文转换为拼音。以下是具体实现步骤: 安装拼音转换库 推荐使用pinyin或v-chinese2pinyin库。通过npm或yarn安…