当前位置:首页 > 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:

.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 钩子实现更复杂的动画逻辑:

<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 监听数据变化并应用动画:

vue 实现动画

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 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addToC…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue实现浮标

vue实现浮标

Vue 实现浮动按钮(浮标) 使用 Vue 实现浮动按钮可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 定位和 Vue 组件 创建 Vue 组件并配合 CSS 固定定位实现浮动按钮:…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue轮播实现

vue轮播实现

Vue 轮播实现方法 使用第三方库(推荐) 安装 swiper 或 vue-awesome-swiper 库,快速实现功能丰富的轮播效果。 以 vue-awesome-swiper 为例: npm…

vue 实现弹窗

vue 实现弹窗

Vue 实现弹窗的方法 在 Vue 中实现弹窗功能可以通过多种方式完成,以下是几种常见的方法: 使用组件和 v-if/v-show 控制显示 创建一个独立的弹窗组件,通过 v-if 或 v-show…