vue中的列表过度原理

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>Vue中的列表过渡</title>
	<script src='./vue.js'></script>
	<style>
		.v-enter, .v-leave-to{
			opacity: 0;
		}
		.v-enter-active, .v-leave-active{
			transition: opacity 1s;
		}
	</style>
</head>
<body>
	<div id="root">
		<transition-group>
			<div v-for="item of list" :key="item.id">
				{{item.title}}
			</div>
		</transition-group>
			<button @click="handleBtnClick">Add</button>
	</div>

	<script>

		var count = 0

		var vm = new Vue({
			el:"#root",
			data:{
				list:[]
			},
			methods:{
				handleBtnClick:function(){
					this.list.push({
						id: count++,
						title:'hello world'
					})
				}
			}
		})
	</script>
</body>
</html>

div列表循环后会变成多个div 然后在多个div外边加一个transition-group标签 相当于在每个div标签都单独加了transition标签 这样就相当于把列表的过渡转化为单个元素的过渡了 每一个单个元素的过度 vue会在这个元素隐藏或者显示的时候动态的找到时间点 增加一些对应的class的名字 而恰好又写了v-enter、v-leave-to、v-enter-active、v-leave-active这些class的名字所对应的css内容 那么我们每一个列表上就有自己的动画