Vue中的动画和CSS3中的动画不同,Vue的动画主要用于增加页面交互性,提升用户体验【例如一些淡入、淡出的简单效果,不适合做复杂的动画特效】
Vue.js官方文档
https://v2.cn.vuejs.org/v2/guide/transitions.html

这是一个完整的动画执行过程,Enter是入场动画,Leave是离场动画。

入场动画有两个时间点,即v-enter和v-enter-to,表示透明度从0到1的转换。
v-enter时间点表示动画进入之前的起始状态。
v-enter-to时间点表示动画进入之后的状态。
从起始状态到结束状态需要一定的时间,这个时间段就是v-enter-active。

离场动画同样有两个时间点和一个时间段,表示透明度从1到0的转换。
v-leave表示离开之前的状态。
v-leave-to表示离开之后的状态。
v-leave-active表示时间段。
单击按钮,控制元素的显示和隐藏。

这是以前做过的版本,点击按钮,内容直接消失,再点,立即出现,很突兀。
加上动画效果:
使用Vue动画的两个步骤:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Documenttitle>
<style>
/* 两个时间点 */
.v-enter,
.v-leave-to{
opacity: 0;
transform: translateX(100px);
}
.v-enter-active,
.v-leave-active{
transition: all 1s ease;
}
style>
head>
<body>
<div id="app" v-cloak>
<input type="button" value="toggle" @click="toggleFn">
<transition>
<div v-if="flag">
<h1>Helloh1>
div>
transition>
div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
var vm = new Vue({
el: '#app',
data: {
msg: "Hello world",
flag: true
},
methods: {
toggleFn() {
this.flag = !this.flag
}
}
})
script>
body>
html>

运行效果

进入之后的样式不考虑,进入之前和离开之前的状态是一样的,透明度为0,opacity: 0;