Vue中的過渡動畫是Vue提供的一種動態效果,可以在元素插入、更新或刪除時自動執行一些動態效果,使得頁面交互更加生動、自然。在Vue中,過渡通常包含兩個組價:Transition和TransitionGroup。
Transition組件可以對單個元素進行動態效果的設置,包括進入和離開動畫效果,也可以設置延遲、持續時間和緩動函數(即過渡的速度)??梢酝ㄟ^以下代碼設置:
<transition name="fade"> <div v-if="show">Hello Vue.js!</div> </transition>
上面的代碼中,我們使用了v-if指令來決定是否顯示元素,name屬性為動畫定義一個名稱(此處為fade),當對象出現和消失時,將應用定義的轉換。例如:
.fade-enter-active, .fade-leave-active { transition: opacity .5s; } .fade-enter, .fade-leave-to { opacity: 0; }
其中,fade-enter和fade-leave-to類名為狀態類名,對應的狀態分別是進入動畫開始和退出動畫結束;而fade-enter-active和fade-leave-active為過渡的狀態類名,對應整個過渡時間,可以在這些狀態類名里設置動畫實現方式。
TransitionGroup組件用于同時添加和刪除多個元素的動態效果,與Transition的用法類似。不同點是TransitionGroup組件需要提供一個唯一的key值,用于判斷每個元素的狀態,根據相應的狀態應用不同的動畫效果。例如:
<transition-group name="list" tag="ul"> <li v-for="(item, index) in list" :key="index">{{ item }}</li> </transition-group>
上面的代碼中,我們使用v-for指令遍歷數組,并給每個元素一個key值。TransitionGroup組件渲染的為容器組件,tag屬性決定容器類型為ul,name為定義的動畫名稱。分別定義如下:
.list-enter-active, .list-leave-active { transition: all .2s; } .list-enter, .list-leave-to { opacity: 0; transform: translateX(30px); }
這兩個類的作用和Transition的一樣,分別是元素進入時的狀態和元素離開時的狀態。通過TransitionGroup組件,我們可以實現列表元素的動畫效果。
總之,在Vue中,過渡動畫可以幫助我們使得頁面交互更加生動、自然,并且利用Vue提供的Transition和TransitionGroup組件可以很方便地定制動畫,無需手動添加CSS樣式。