在 GSAP 中,可以將 Tween 視為一個 css 屬性設定器,我們可以在指定元素上,賦予起始屬性或終止屬性,隨後 GSAP 就會幫我們把動畫產生出來。
創建 GSAP Tween
可以用來創建 Tween 的方法如下 (他們的返回值都是 Tween)
- gsap.to() 指定終止屬性
- gsap.from() 指定起始屬性
- gsap.fromTo() 指定起始與終止屬性
透過這些方法,我們就可以開始做一些動畫
gsap.to('.box', { rotation: 360, duration: 5 });
我們使用了 gsap.to(),代表我們希望指定動畫終止時的屬性,如同在一開始說的,我們傳入了要操作的元素 .box,以及我們希望的最終屬性 { rotation: 360, duration: 5 },也就是我們希望 .box 元素,在 5 秒內旋轉一圈
GSAP Tween 的參數
CSS 選擇器
透過傳入 css 選擇器來去找到我們操作的元素
動畫配置
也就是範例裡的 { rotation: 360, duration: 5 },可以使用
- css 樣式
- 大部分的 css 樣式都是直接用小駝峰的形式(ex: backgroundColor),使用在此參數的物件內
- transfrom 相關的樣式會有一些比較簡單的寫法,如: translateX 可以直接用 x,translateY 可以直接用 y
- 如果要做淡入淡出的動畫,可以使用 gsap 提供的 autoAlpha 屬性,可以避免掉直接使用 opacity 與 visibility 產生的動畫缺陷
- 動畫相關設定 (以下舉例幾個常用到的設定)
- duration 動畫時間長度 (單位為秒)
- delay 動畫延遲時間長度 (單位為秒)
- ease 動畫的 timing function,GSAP 另外提供了許多種參數,可參考 Ease Visualizer
- paused 動畫暫停 (動畫將不會自動撥放)
- repeat 動畫重複次數,-1 代表無限多次
- yoyo 動畫重複時,會再由結束屬性回到起始屬性
- 事件回調函數
- onStart 開始時調用
- onRepeat 重播時調用
- onComplete 結束時調用
操作 GSAP Tween
我們除了直接使 Tween 的動畫撥放,也可以像是影片那樣來操作動畫
// gsap.to() 會返回一個 Tween 的實例,透過這個實例就可以做各種操作
// 先透過 paused: true 不自動撥放 tween
const tween = gsap.to('.box', { rotation: 360, duration: 5, paused: true });
// 將 tween 的時間移動到 2 秒
tween.seek(2);
// 播放 tween
tween.play();
常用的操作方法
- play() 播放
- pause() 暫停
- reverse() 倒帶
- restart() 重頭撥放
- seek() 跳到指定秒數