GSAP
官網 GreenSock
GSAP(GreenSock Animation Platform),是一套處理動畫與特效的 JS 套件。
之前常見的 TweenMax 就是其中的一個核心功能。從 GSAP3 開始就都合併成 gsap 物件。gsap 物件有各種方法和屬性,可用來創建 Tweens(補間)和 Timelines(時間軸)。新舊版本寫法不同,
但都可以使用。建議使用新寫法,可讀性更好。
ps.補間(in-betweening):意指如同畫紙漸進方式,產生動畫。補間動畫中,我們只要定義起點、終點、時間軸、動畫時間、速度曲線,那麼框架就會自動幫我們計算出起點到終點間的過渡動畫。
因為 GSAP 可以使用 GPU 加速,因此執行速度效能上會勝過 jQuery。透過其模組化結構,保持了核心引擎的輕量,又加上它是漸變的去改變某個屬性。可使用在任何可操控的屬性上去製作動畫效果,是一個相當好用的工具。
DOM, SVG 和 canvas 都可以使用。
使用
安裝
npm install gsap --save
CDN
https://cdnjs.cloudflare.com/ajax/libs/gsap/3.4.2/gsap.min.js
基本語法
gsap.method('selector', {});
timeline
1 | const tl = gsap.timeline(); |
持續(duration)時間寫法
舊寫法
1 | // 參數分別是 target目標、duration動畫時間、vars動畫相關參數 |
新寫法
1 | // 參數分別是 target目標、、vars動畫相關參數(整合 duration動畫時間) |
交錯屬性
之前要創建 Tween 實體再使用,但現在不需要了。
新寫法
1 | gsap.to('.box', { |
亂數功能
1 | // 100 - 200 |
影格(Keyframes)
在同一個 Tween 內完成。
1 | gsap.to('.box', { |
全域動畫
以控制全部的動畫實體。
1 | gsap.globalTimeline.timeScale(0.1); // 控制所有動畫的速率 0 ~ 1 |
相對動畫時間
:最近添加的動畫的開始時間
- <:最近添加的動畫的結束時間
1 | gsap.timeline() |
Tween(補間)動畫
產生一段動畫效果。
讓動畫從原本的效果改變成到設定的效果
gsap.to(target, vars)
讓動畫從設定的效果變回到原本的效果
gsap.from(target, vars)
設定變化前後的樣式
gsap.fromTo(target, fromVars , toVars)
target:所有符合的 CSS 選擇器都會是設置動畫的對象。
多個元素對象,使用陣列 [element1, element2]。
vars:設置補間效果及屬性狀態。
e.g.
連續動畫效果
1 | gsap.to('.box1', { duration: 1, x: 100, }); |
Timeline
用來控制、管理一連串的動畫。就像先產生一段時間後,再加入動畫效果。
- 控制多段動畫 / 序列動畫
用 Timeline 來做連續動畫效果,可以不用添加 delay 屬性。
1 | const t1 = gsap.timeline(); |
- 放置動畫
有四種方法: to()、from()、fromTo()、set()
1 | const tl = gsap.timeline(); |
- 鏈式呼叫
1 | const tl = gsap.timeline(); |
- 加入已有動畫
1 | const tween = gsap.to(element, { |
- 控制動畫插入點
1 | // 插入至時間軸末尾 |
有許多範例可以參考使用。
結合 DrawSVG(jQuery)-製作SVG筆繪動畫
以往要製作 svg 的筆繪效果動畫,需要使用 CSS 來操作,利用 css的 stroke-dashoffset
等屬性,使用 keyframe 的方式去製作動態效果。現在直接可以結合 GSAP3 跟 DrawSVG 來做。
e.g.
1 | squiggle { |
先引用 jQuery
引用 drawsvg(GSAP 有plugin)
使用方式
gsap.fromTo('.squiggle', 2, { drawSVG: "0%" }, { drawSVG: "100%" })
參考:
https://hackmd.io/@chupai/SJStDfFV8
https://medium.com/@faition2/認識tweenmax-1-668549dc312
https://ithelp.ithome.com.tw/articles/10207628
http://blog.wingzero.tw/2018/07/gsapgreensock-animation-platform.html
https://ithelp.ithome.com.tw/articles/10223796
https://junyou.tw/jquery-drawsvg/