官網API: https://cn.vuejs.org/v2/guide/transitions.htmlcss
demo點擊顯示與消失html
<div id="demo"> <button v-on:click="show = !show"> Toggle </button> <transition name="fade"> <p v-if="show">hello</p> </transition> </div> <script> new Vue({ el: '#demo', data: { show: true } }) </script> <style> .fade-enter-active, .fade-leave-active { transition: opacity .5s } .fade-enter, .fade-leave-active { opacity: 0 } </style>
<transition name="fade"> 運動東西(元素,屬性、路由....) </transition>
class定義:vue
.fade-enter{ } 進入過渡的開始狀態,元素被插入時生效,只應用一幀後當即刪除;(運動的初始狀態)ide
.fade-enter-active{ } 進入過渡的結束狀態,元素被插入時就生效,在 transition/animation
完成以後移除。這個類能夠被用來定義過渡的過程時間,延遲和曲線函數。函數
.fade-leave{ } 離開過渡的開始狀態,元素被刪除時觸發,只應用一幀後當即刪除;動畫
.fade-leave-active{ } 離開過渡的結束狀態,元素被刪除時生效,在 transition/animation
完成以後移除。這個類能夠被用來定義過渡的過程時間,延遲和曲線函數。ui
默認的.fade-enter變成.fade-in-enter;spa
默認的.fade-enter-active變成.fade-in-active;code
默認的.fade-leave變成.fade-out-enter;htm
默認的.fade-leave-active變成.fade-out-active;
<transition name="fade" enter-class="fade-in-enter" enter-active-class="fade-in-active" leave-class="fade-out-enter" leave-active-class="fade-out-active" > <p v-show="show">hello</p> </transition>
.fade-in-active, .fade-out-active{ transition: all 0.5s ease } .fade-in-enter, .fade-out-active{ opacity: 0 }
<transition name="fade" @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter" @before-leave="beforeLeave" @leave="leave" @after-leave="afterLeave" > <p v-show="show"></p> </transition>
methods:{ beforeEnter(el){ console.log('動畫enter以前'); }, enter(el){ console.log('動畫enter進入'); }, afterEnter(el){ console.log('動畫進入以後'); el.style.background="blue"; }, beforeLeave(el){ console.log('動畫leave以前'); }, leave(el){ console.log('動畫leave'); }, afterLeave(el){ console.log('動畫leave以後'); el.style.background="red"; } }
<transition enter-active-class="zoomInLeft" leave-active-class="zoomOutRight"> <p v-show="show" class="animated"></p> </transition> 或者 <transition enter-active-class="animated zoomInLeft" leave-active-class="animated zoomOutRight"> <p v-show="show"></p> </transition>
<!-- key通常是循環遍歷出來的 --> <transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight"> <p v-show="show" :key=""></p> <p v-show="show" :key=""></p> </transition-group>