Vue过渡与动画

Vue过渡与动画教程

Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。Vue 提供了内置的过渡封装组件,该组件用于包裹要实现过渡效果的组件。

Vue过渡与动画详解

语法

<transition name = "nameoftransition"> <div></div> </transition>

Vue过渡与动画Class切换

在进入/离开的过渡中,会有 6 个 class 切换。

v-enter

定义

定义进入过渡的开始状态。

说明

在元素被插入之前生效,在元素被插入之后的下一帧移除。

v-enter-active

定义

定义进入过渡生效时的状态。

说明

在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

v-enter-to

定义

Vue 2.1.8版及以上定义进入过渡的结束状态。

说明

在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。

v-leave

定义

定义离开过渡的开始状态。

说明

在离开过渡被触发时立刻生效,下一帧被移除。

v-leave-active

定义

定义离开过渡生效时的状态。

说明

在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

v-leave-to

定义

Vue 2.1.8 版及以上定义离开过渡的结束状态。

说明

在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。

对于这些在过渡中切换的类名来说,如果你使用一个没有名字的 <transition>,则 v- 是这些类名的默认前缀。如果你使用了 <transition name="my-transition">,那么 v-enter 会替换为 my-transition-enter

Vue过渡与动画Class切换示意图

01 vue transition.png

元素进入动画开始时,叫 v-enter,此时 Opacity 为 0,即动画开始时元素的透明度为 0,元素进入动画结束时,叫 v-enter-to , 此时 Opacity 为 1,即元素进入完成时元素的透明度为 1。

在元素进入和元素进入完成的这一段时间叫做 v-enter-active。

元素离开动画开始时,叫 v-leave,此时 Opacity 为 1,即元素离开动画开始时元素的透明度为 1,元素离开动画结束时,叫 v-leave-to , 此时 Opacity 为 0,即元素离开完成时元素的透明度为 0。

在元素离开和元素离开完成的这一段时间叫做 v-leave-active。

案列

Vue过渡与动画

<!DOCTYPE html> <html> <head> <title>Vue 过渡及动画</title> <script type="text/javascript" src="./lib/vue-2.6.10.min.js"></script> </head> <style type="text/css"> /*v-enter [这是一个时间点] 是进入之前,元素的起始状态,此时还没有开始进入*/ /*v-leave-to [这是一个时间点] 是动画离开之后,离开的终止状态,此时元素动画已经结束*/ .v-enter, .v-leave-to { opacity: 0; } /*v-enter-active [入场动画的时间段]*/ /*v-leave-active [离场动画的时间段]*/ .v-enter-active, .v-leave-active { transition: all 0.4s ease; } </style> <body> <div id="app"> <input type="button" value="toggle" @click="flag=!flag"> <transition> <h3 v-if="flag">嗨客网</h3> </transition> <p>嗨客网(www.haicoder.net)</p> </div> </body> <script type="text/javascript"> var vm = new Vue({ el :'#app', data:{ flag: true } }) </script> </html>

浏览器运行效果如下图所示:

02 vue transition.png

这里我们定义了一个淡入淡出的动画。v-enter [这是一个时间点] 是进入之前,元素的起始状态,此时还没有开始进入。

v-leave-to [这是一个时间点] 是动画离开之后,离开的终止状态,此时元素动画已经结束。v-enter-active [入场动画的时间段]。v-leave-active [离场动画的时间段]。

Vue过渡与动画总结

Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。Vue 提供了内置的过渡封装组件,该组件用于包裹要实现过渡效果的组件。Vue 过渡与动画语法:

<transition name = "nameoftransition"> <div></div> </transition>

Vue 动画效果都需要我们自己写 CSS 样式,相对比较麻烦,在项目中,大多情况下,我们会借助第三方 CSS 动画库来实现,如:Animate.css 。