当前位置:首页 > VUE

vue 实现过渡效果

2026-01-18 20:42:57VUE

Vue 过渡效果实现方法

Vue 提供了 <transition><transition-group> 组件,用于在元素插入、更新或移除时应用动画效果。以下是具体实现方式:

基础过渡效果

使用 <transition> 包裹需要动画的元素,并定义 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;
}

自定义过渡类名

可以覆盖默认的类名,与第三方动画库(如 Animate.css)配合使用:

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

JavaScript 钩子函数

通过 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 })
  },
  leave(el, done) {
    Velocity(el, { opacity: 0 }, { duration: 500, complete: done })
  }
}

列表过渡效果

使用 <transition-group> 为列表元素添加动画:

<transition-group name="list" tag="ul">
  <li v-for="item in items" :key="item.id">
    {{ item.text }}
  </li>
</transition-group>
.list-enter-active, .list-leave-active {
  transition: all 1s;
}
.list-enter, .list-leave-to {
  opacity: 0;
  transform: translateY(30px);
}

状态过渡

对数值变化应用动画效果:

vue 实现过渡效果

<template>
  <div>{{ animatedNumber }}</div>
</template>

<script>
export default {
  data() {
    return {
      number: 0,
      tweenedNumber: 0
    }
  },
  computed: {
    animatedNumber() {
      return this.tweenedNumber.toFixed(0)
    }
  },
  watch: {
    number(newValue) {
      gsap.to(this.$data, { duration: 0.5, tweenedNumber: newValue })
    }
  }
}
</script>

注意事项

  • 过渡组件需要为子元素设置 key 属性
  • CSS 过渡类名的命名遵循 name-enter/leave-active 等规则
  • 使用 JavaScript 钩子时需调用 done 回调函数
  • 列表过渡中元素定位应设置为 position: absolute 避免布局问题

以上方法可根据实际需求组合使用,实现从简单到复杂的各种过渡效果。

标签: 效果vue
分享给朋友:

相关文章

vue登录业务的实现

vue登录业务的实现

实现登录业务的基本流程 在Vue中实现登录业务通常涉及前端界面设计、表单验证、API请求交互、状态管理以及路由控制等环节。以下是核心实现步骤: 登录表单设计与验证 创建包含用户名和密码输入框的登录组…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue实现slider

vue实现slider

Vue 实现 Slider 组件 使用 Vue 实现 Slider 组件可以通过原生开发或借助第三方库。以下是两种常见方法: 原生实现 Slider 创建一个基础的 Slider 组件,通过 v-m…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…

vue实现编辑

vue实现编辑

Vue 实现编辑功能 在 Vue 中实现编辑功能通常涉及表单绑定、状态管理和事件处理。以下是一个常见的实现方法: 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定: <i…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 class…