<div>
<button @click="show = !show">show toggle</button>
<transition name="fade"> //fade 自定義名稱
<p v-if="show">hello</p>
</transition>
</div>
<style>
.fade-enter-active, .fade-leave-active{ //指就是html中fade名稱
transition: opacity .5s; 0.5s動畫過渡的時間
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
複製代碼
在線運行css
v-enter:定義進入過渡的開始狀態。在元素被插入以前生效,在元素被插入以後的下一幀移除。html
v-enter-active:定義進入過渡生效時的狀態。在整個進入過渡的階段中應用,在元素被插入以前生效,在過渡/動畫完成以後移除。這個類能夠被用來定義進入過渡的過程時間,延遲和曲線函數。vue
v-enter-to: 2.1.8版及以上 定義進入過渡的結束狀態。在元素被插入以後下一幀生效 (與此同時 v-enter 被移除),在過渡/動畫完成以後移除。git
v-leave: 定義離開過渡的開始狀態。在離開過渡被觸發時馬上生效,下一幀被移除。github
v-leave-active:定義離開過渡生效時的狀態。在整個離開過渡的階段中應用,在離開過渡被觸發時馬上生效,在過渡/動畫完成以後移除。這個類能夠被用來定義離開過渡的過程時間,延遲和曲線函數。npm
v-leave-to: 2.1.8版及以上 定義離開過渡的結束狀態。在離開過渡被觸發以後下一幀生效 (與此同時 v-leave 被刪除),在過渡/動畫完成以後移除。bash
<div>
<button @click="show = !show">show toggle</button>
<transition name="fade"> //fade 自定義名稱
<p v-if="show">hello</p>
</transition>
</div>
<style>
.fade-enter-active { //類名:隱藏到顯示過程所須要的時間
animation: bounce-in .5s;
}
.fade-leave-active { //類名:顯示到隱藏過程所須要的時間
animation: bounce-in .5s reverse; //reverse表示和隱藏到顯示動畫相反
}
@keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
</style>
複製代碼
在線運行ide
引入第三方css庫Animate.css函數
學到這裏,咱們其實也能夠能夠引用第三方庫來實現這效果,Animate.css動畫
// 在index.html文件下引入Animate.css
<link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css">
// 在組件內
<div>
<button @click="show = !show">show toggle</button>
<transition
enter-active-class="animated tada"
leave-active-class="animated bounceOutRight" >
<p v-if="show">hello</p>
</transition>
</div>
複製代碼
因此就引入下面這個問題 你就須要使用 type 特性並設置 animation 或 transition 來明確聲明你須要 Vue 監聽的類型。
<transition :duration="{ enter: 500, leave: 800 }">...</transition> //以毫秒計算
複製代碼
這個方法使用狀況,Vue 能夠自動得出過渡效果的完成時機。默認狀況下,Vue 會等待其在過渡效果的根元素的第一個 transitionend 或 animationend 事件。然而也能夠不這樣設定——好比,咱們能夠擁有一個精心編排的一系列過渡效果,其中一些嵌套的內部元素相比於過渡效果的根元素有延遲的或更長的過渡效果。