關于Vue的動畫效果,有很多經典案例。其中一個經典案例是淘寶購物車動畫效果。當用戶在淘寶頁面上點擊“加入購物車”按鈕時,購物車圖標會出現一個小的動畫效果,向用戶呈現剛加入的商品信息,并且還會有逐漸變淡的效果。這個Vue動畫的效果是通過Vue的transition和keyframe動畫來實現的。
<transition name="fly"> <div key="cart" class="cart-animation"> <i class="icon-cart"></i> <span class="text">已加入購物車</span> </div> </transition> @keyframes cart-fly { 0% { transform: translateY(0); } 20% { transform: translateY(-20px); opacity: 0.3; } 80% { transform: translateY(-60px); opacity: 0.1; } 100% { transform: translateY(-80px); opacity: 0; } } .fly-enter-active, .fly-leave-active { transition: all .3s ease; } .fly-enter, .fly-leave-to { animation: cart-fly .8s cubic-bezier(.41,.46,.49,.49) forwards; transform: translateY(0); opacity: 1; }
代碼中的transition標簽定義了該動畫所屬的組件名,代碼中我們定義為fly。transition標簽內部使用了keyframe動畫,也就是上述代碼中的@keyframes cart-fly。其中,這個關鍵幀動畫定義了在動畫過程中目標組件所需要的變換動畫,同時transition標簽定義了這些動畫的過渡時間和方式。
另一個很經典的Vue動畫效果是Vue.js的官方文檔中提供的fade-animation。這個動畫效果的原理比較簡單,就是使用Vue的transition組件和CSS3的transition效果。其核心代碼如下:
.fade-enter-active, .fade-leave-active { transition: opacity .5s; } .fade-enter, .fade-leave-to { opacity: 0; }
代碼中,fade-enter-active和fade-leave-active定義了目標組件進入或離開頁面時需要執行的過渡效果,這里我們定義它們的過渡效果是opacity的漸變。而fade-enter和fade-leave-to定義了進入或離開節點的初始狀態。
最后一個Vue動畫效果是vue-animae框架的弱提示message動畫。這個動畫效果是一個弱提示框,當用戶操作某些特定事件時,會在屏幕的上方彈出一個淺黃色的提示框,提示當前操作。該動畫效果的核心代碼如下:
<transition name="van-message"> <div v-show="visible" class="van-toast van-toast--text van-toast--middle" role="alert" aria-live="polite"> <div class="van-toast__text">{{message || '提示'}}</div> </div> </transition>
同樣也是使用了Vue的transition組件加上CSS3的transition進行動畫效果的過渡。其中,van-message是該動畫的組件名稱,而visible是動畫執行的動態屬性。
以上是Vue動畫效果的三個經典案例,每一個案例的實現方式不盡相同,但都是以Vue的transition組件和CSS3的transition作為核心動畫實現方式。如果你對Vue的動畫效果有更深入的學習需求,除了這些案例,你可以前往Vue.js官方文檔詳讀Vue的transition組件,掌握更多酷炫的Vue動畫效果!