沒有時間軸的 gsap 動畫,都是獨立且直接立即播放

直接使用 gsap 的動畫方法,每一段操作的元素都屬於獨立的動畫,在沒有時間軸的安排下,會是直接運行程式碼時立即直接播放動畫。

範例中的 3 個方塊動畫都是一樣的,並且會同時移動。

當然如果不要 repeat 的話,直接放一次透過 delay 屬性來算時間是可以達到,但這只限每個元素動畫放一次的情形下才可以,另外還要算先前動畫的時間透過 delay 來設定,自然不方便了。

See the Pen GSAP – duration + delay by Jimmy_Wu (@Jimmy_Wu) on CodePen.


tileline 時間軸

透過 gsap.timeline() 宣告變數 tl,將每個動畫對象透過 tl 變數接 gsap 方法串接

3 個方塊的動畫是依序執行 (意指 A 結束後才接著 B 以此類推),那麼這時候就需要用到 Timeline 了。

範時會發現在 tl 串接 .to() 方法,在三個方塊一樣同時移動,而且不是獨立播放且重覆播放。

tileline 的 defaults 參數,將共用動畫參數做為預設值共用,增加程式碼可讀性

透過 defaults 參數將相同的屬性寫在一起,程式碼只需要寫一次了,透過這種方式程式碼得可維護性就跟著升高。

使用 timeline 時間軸後的動畫方法,第三參數用來設定播放的時間,說明 num | += | -= | < | <+=num | > | >-num

官方所提供的時間軸參數 codepen。

See the Pen Position Parameter explainer – constructor by GSAP (@GreenSock) on CodePen.

See the Pen GSAP – 30 by Jimmy_Wu (@Jimmy_Wu) on CodePen.

時間設定參數如下:

  • 沒設參數:直接開始動畫。
  • 1:數值指定 1 秒於時間軸開始後 1 秒啟動。
  • '+=2':時間軸結束後 2 秒。
  • "-=1":時間軸結束前 1 秒。
  • <:上一個動畫的開始,加入的動畫會與前一個動畫的開頭齊頭。
  • "<3""<+=3":上一個動畫開始後 3 秒。
  • >:上一個動畫的結尾,加入的動畫會會在前一個動畫的結尾處將開頭接上。
  • ">-3":上一個動畫結束前 3 秒,可理解成 上一個動畫的結尾加 -3 秒

資料來源: