74
Vue 3 學習之旅
過渡與動畫

Day 74: JavaScript 鉤子動畫

·6 分鐘閱讀·過渡與動畫

摘要

<Transition> 元件提供了一系列的 JavaScript 事件鉤子,讓我們可以完全透過 JavaScript 來控制動畫的整個過程,實現最大的靈活性。

定義與說明

我們可以監聽 <Transition> 上的事件,如 @before-enter@enter@after-enter 等。在這些事件的回呼函式中,我們可以存取到動畫元素,並使用 JavaScript(或 GSAPAnime.js 等函式庫)來直接操作其樣式,實現動態的、可程式化的動畫。

實作範例

JavaScript 鉤子示例
<template>
  <Transition
    @enter="onEnter"
    :css="false" <!-- 告訴 Vue 不用偵測 CSS 動畫 -->
  >
    <div v-if="show">...</div>
  </Transition>
</template>

<script setup>
function onEnter(el, done) {
  // 使用 GreenSock 動畫函式庫
  gsap.to(el, {
    duration: 0.5,
    x: 100,
    onComplete: done // 動畫完成後必須呼叫 done()
  });
}
</script>

結論

JavaScript 鉤子為動畫提供了無限的可能性。當 CSS 無法滿足需求,或需要與第三方動畫函式庫深度整合時,它就是我們的終極武器。

JavaScript 鉤子 GSAP 動畫函式庫