切換語言為:簡體
Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

  • 爱糖宝
  • 2024-07-18
  • 2084
  • 0
  • 0

想做點花哨的動畫嗎,讓你的介面更加活靈活現。本文將帶大家瞭解vue中負責新增動畫的<transition>元件以及專業的動畫庫Animate.css。

transition元件

舉個例子:

這是一個小列車:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

如果我給它加上這樣的css,在讓它出現和消失的動畫會是怎麼樣的呢?

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果


首先,我們給小列車新增v-if:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

新增一個按鈕附上點選事件:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

定義點選事件:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

效果

從右邊慢慢從透明顯示到中間:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

從中間慢慢消失在左邊:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

各屬性的含義

基礎屬性:

  • opacity:透明度,0則透明,1則完全顯現。

  • transform:變換,如用的是translateX(600px)就是從右邊600px開始,translateX(-600px)則從左邊600px開始,還有translateY即上下。

  • transition:變換時間,這個過程花費的時間。


狀態屬性:

  • .name-enter-from:顯現的初始狀態

  • .name-enter-active:顯現的過程

  • .name-enter-to:顯現的最後狀態(儘管這裏寫透明度為多少,最後都會變成1的透明度)

  • .name-enter-from:消失的初始狀態

  • .name-enter-active:消失的過程

  • .name-enter-to:消失的結束狀態(儘管這裏寫透明度為多少,最後都會變成0的透明度,也就是完全消失)

拓展

變大變小

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

scale3d用於三維縮放,scale用於二維縮放。

transform還有許多其他的屬性:

  • rotate()

    • 用於旋轉元素。rotate() 可以按照指定的角度旋轉元素,rotateX()rotateY(), 和 rotateZ() 分別在x軸、y軸和z軸上旋轉元素。

    • 示例:transform: rotate(45deg); 或 transform: rotateX(90deg);

  • skew()

    • 用於傾斜元素。skewX() 和 skewY() 分別在x軸和y軸上傾斜元素。

    • 示例:transform: skewX(20deg);

  • matrix() 和 matrix3d()

    • 這些函式允許你透過矩陣來應用更復雜的轉換。matrix() 是一個二維的變換,而 matrix3d() 是一個三維的變換。

  • perspective()

    • 不是一個變換函式,但它用於定義元素的透視距離,影響3D變換的效果。perspective 可以作為一個獨立的屬性,也可以作為變換的一部分。

    • 示例:transform: perspective(1000px);

  • origin 屬性

    • 雖然不是 transform 的一部分,但是 transform-origin 屬性可以設定變換的參考點,即元素的哪個部分是變換的中心。

    • 示例:transform-origin: 50% 50%;

animation

  • 關鍵幀(@keyframes): 關鍵幀使用 @keyframes 規則定義,用於設定動畫中的不同狀態。它們描述了動畫從開始到結束的各個階段。例如,你可以定義動畫的開始狀態、中間狀態和結束狀態:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

想必大家看到這個拳頭的emoji就知道效果是怎樣的了,就是一個拳頭在不停地錘螢幕前的你。

基礎屬性:

  • animation-duration: 一次動畫的時間。

  • animation-iteration-count: 動畫執行的次數,上面的infinite意為無終止的,即反覆執行動畫。

  • animation-delay: 設定動畫開始前的延遲時間。

  • animation-direction: 控制動畫是否反向播放。

  • animation-fill-mode: 設定動畫開始前或結束後元素的樣式。

  • animation-play-state: 控制動畫是否暫停或執行。

Animate.css(專業的動畫庫)

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

裡面包含了各種動畫,只有你想不到,沒有它做不到。

使用示例:

Vue 中使用動畫庫 Animate.css 實現互動性動畫效果

注意:外面還是要套一層transition,再加上動畫庫中配好的類名。

結語

動畫效果不僅可以讓介面看得更加流暢舒服,還可以在使用網頁的各種操作時得心應手,大幅提升使用者體驗,所以身為一個前端er,會製作動畫是一個很大的加分項。

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.