Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。Vue 提供了内置的过渡封装组件,该组件用于包裹要实现过渡效果的组件。
<transition name = "nameoftransition">
<div></div>
</transition>
在进入/离开的过渡中,会有 6 个 class 切换。
定义进入过渡的开始状态。
在元素被插入之前生效,在元素被插入之后的下一帧移除。
定义进入过渡生效时的状态。
在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
Vue 2.1.8版及以上定义进入过渡的结束状态。
在元素被插入之后下一帧生效 (与此同时 v-enter
被移除),在过渡/动画完成之后移除。
定义离开过渡的开始状态。
在离开过渡被触发时立刻生效,下一帧被移除。
定义离开过渡生效时的状态。
在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
Vue 2.1.8 版及以上定义离开过渡的结束状态。
在离开过渡被触发之后下一帧生效 (与此同时 v-leave
被删除),在过渡/动画完成之后移除。
对于这些在过渡中切换的类名来说,如果你使用一个没有名字的 <transition>
,则 v-
是这些类名的默认前缀。如果你使用了 <transition name="my-transition">
,那么 v-enter
会替换为 my-transition-enter
。
元素进入动画开始时,叫 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。
<!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>
浏览器运行效果如下图所示:
这里我们定义了一个淡入淡出的动画。v-enter [这是一个时间点] 是进入之前,元素的起始状态,此时还没有开始进入。
v-leave-to [这是一个时间点] 是动画离开之后,离开的终止状态,此时元素动画已经结束。v-enter-active [入场动画的时间段]。v-leave-active [离场动画的时间段]。
Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。Vue 提供了内置的过渡封装组件,该组件用于包裹要实现过渡效果的组件。Vue 过渡与动画语法:
<transition name = "nameoftransition">
<div></div>
</transition>
Vue 动画效果都需要我们自己写 CSS 样式,相对比较麻烦,在项目中,大多情况下,我们会借助第三方 CSS 动画库来实现,如:Animate.css 。