Vue中CSS動畫原理

transition標籤過渡動畫的原理:
當一個元素被transition包裹了之後,Vue會自動分析元素的css樣式,然後構建一個動畫的流程.
在這裏插入圖片描述
上圖的線加上幾個點就是動畫從的流程,在動畫即將被執行的這一瞬間,他會往內部的div上增加兩個class,分別是fade-enter和fade-enter-active,當動畫第一幀執行結束之後,Vue會在動畫執行到第二幀的時候,fade-enter這個class會被去掉,然後增加一個名爲fade-enter-to的class,接着動畫會繼續執行,執行到結束的這一瞬間,Vue會把fade-enter-actice和fade-enter-to兩個class去除掉。
CSS3 過渡是元素從一種樣式逐漸改變爲另一種的效果。要實現這一點,必須規定兩項內容:

  • 指定要添加效果的CSS屬性
  • 指定效果的持續時間。
<style>
/*因爲我們給transition起的名字是fade,所以calss的前綴是fade,
如果不給transition起名字,默認的前綴是v,例如v-enter*/
			.fade-enter{
				opacity: 0;
			}
			.fade-enter-active{
				transition: opacity 1s;
			}
		</style>
	</head>
	<body>
		<div id="root">
			<transition name="fade">
			<div v-if="show">Hello World</div>
			</transition>
			<button @click="handleClick">change</button>
		</div>
		<script>
			var vm = new Vue({
				el:'#root',
				data:{
					show:true
				},
				methods:{
					handleClick:function(){
						this.show = !this.show
					}
				}
			})
		</script>
	</body>

上面這段代碼實現了一個漸變出現Hello World的效果,因爲fade-enter在第二幀的時候就被去掉了,元素的opacity變回1,而transition監聽了opacity屬性,就實現了一秒透明度從0到1的效果。
上面是動畫從隱藏到顯示的一個流程,而顯示到隱藏的流程與它類似:
在這裏插入圖片描述
以上是Vue中的transition過渡的動畫原理。
實際上,Vue裏面的CSS動畫是通過在某一時刻自動往一些標籤上增加一些樣式來實現的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章