当前位置:首页 > VUE

vue 实现动画

2026-03-07 09:20:02VUE

Vue 动画实现方法

Vue 提供了多种方式实现动画效果,包括内置组件、CSS 过渡/动画以及第三方库集成。

使用 Vue 内置过渡组件

Vue 的 <transition><transition-group> 组件可以方便地添加进入/离开过渡效果。通过添加 CSS 类名实现动画:

<transition name="fade">
  <div v-if="show">内容</div>
</transition>

对应 CSS:

vue 实现动画

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

使用 CSS 动画

通过定义 CSS @keyframes 动画并与 Vue 过渡组件结合:

@keyframes bounce {
  0% { transform: scale(0.9) }
  50% { transform: scale(1.1) }
  100% { transform: scale(1) }
}

.bounce-enter-active {
  animation: bounce 0.5s;
}

JavaScript 钩子实现复杂动画

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

vue 实现动画

<transition
  @before-enter="beforeEnter"
  @enter="enter"
  @leave="leave"
>
  <div v-if="show">内容</div>
</transition>
methods: {
  beforeEnter(el) {
    el.style.opacity = 0
  },
  enter(el, done) {
    Velocity(el, { opacity: 1 }, { duration: 500, complete: done })
  }
}

列表动画

使用 <transition-group> 实现列表项动画,注意为每个项添加唯一 key:

<transition-group name="list" tag="ul">
  <li v-for="item in items" :key="item.id">
    {{ item.text }}
  </li>
</transition-group>

第三方动画库集成

可结合 Animate.css、GSAP 或 Velocity.js 等库:

<transition
  enter-active-class="animate__animated animate__bounceIn"
  leave-active-class="animate__animated animate__bounceOut"
>
  <div v-if="show">内容</div>
</transition>

状态动画

通过数据变化驱动动画,使用 watcher 监听数据变化并应用动画:

watch: {
  value(newVal, oldVal) {
    const el = this.$el.querySelector('.bar')
    const duration = 300
    const start = oldVal
    const change = newVal - oldVal
    const startTime = performance.now()

    function update(time) {
      const elapsed = time - startTime
      const progress = Math.min(elapsed / duration, 1)
      el.style.width = start + change * progress + '%'
      if (progress < 1) requestAnimationFrame(update)
    }
    requestAnimationFrame(update)
  }
}

标签: 动画vue
分享给朋友:

相关文章

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm ins…

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

vue 实现滚动

vue 实现滚动

实现滚动的基本方法 在Vue中实现滚动效果可以通过多种方式完成,包括使用原生JavaScript、CSS或第三方库。以下是一些常见的方法: 使用window.scrollTo方法实现页面滚动 可以通…

vue实现排序

vue实现排序

Vue 实现排序的方法 在 Vue 中实现排序可以通过多种方式完成,以下是一些常见的方法: 使用计算属性排序数组 计算属性非常适合对数据进行排序,因为它会在依赖的数据变化时自动更新。以下是一个示例:…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化 使…

vue 组件实现

vue 组件实现

Vue 组件实现方法 单文件组件 (SFC) 使用 .vue 文件格式,包含模板、脚本和样式三部分: <template> <div class="example">{{…