Observer是GSAP的套件之一,主要用途為偵測使用者的行為,像是滑鼠滾輪向下、或是用手機向下滑。如果你想要向上滑跟向下滑有不同的結果,那就很適合使用這個外掛。

Observer 的基礎操作
因為是套件所以需要另外呼叫
gsap.registerPlugin(Observer); |
呼叫完之後你必須要設定一個想被Observer套用的行為模式
Observer.create({ |
你也可以使用回調函式去看參數的變化
Observer.create({ |
案例研究
gsap也可以做出像輪播圖一格一格的滑動感,只是難度上比一般的輪播圖套件來的難很多,但是他的優勢就是可以用Observer做出往上滑跟往下滑有不同的動畫效果。
animating是用來製造輪播圖效果的參數,當我們正在滑動的時候就不觸發,避免過場動畫亂掉。
因為監聽滑鼠行為的時候操作方向會跟手勢滑動相反(如果你是用Mac可能沒感覺),如果你想同時監聽兩者行為的話建議加上wheelSpeed: -1。
gotoSection()是當我們滑動時需要改變目前顯示的區塊,往下滑會回上一張所以currentIndex會-1,第二個變數是用來顯示對應的動畫效果。
最後tolerance這參數是防止稍微移動一下就觸發onDown跟onUp,這邊建議給他10~50左右。
Observer.create({ |
常用變數介紹
| 指令 | 型別 | 用途 |
|---|---|---|
| lockAxis | Boolean | 開啟鎖定指定軸的方向的相關參數 (可以參考這個例子會比較清楚是在幹麻的) |
| tolerance | Number | 忍受值,如果設定50代表你的滑鼠要移動超過50px才會做觸發的動作 |
| dragMinimum | Number | 拖動忍受值,如果設定50代表你的手要滑動超過50px才會做觸發的動作 |
| ignore | Element | String | Array | 無視的區塊 |
| onChange | Function | 只要有任何的滾動行為都會觸發函式 |
| onChangeX | Function | 只要有任何的左右滾動行為都會觸發函式 |
| onChangeY | Function | 只要有任何的上下滾動行為都會觸發函式 |
| onClick | Function | 只要有任何的點擊行為都會觸發函式 |
| onDown | Function | 只要有滑鼠滾輪向下或手指向下滑都會觸發函式 (如果要向上請加上wheelSpeed: -1) |
| onLeft | Function | 只要有滑鼠滾輪向右或手指向右滑都會觸發函式 |
| onRight | Function | 只要有滑鼠滾輪向右或手指向左滑都會觸發函式 |
| onHover | Function | 滑鼠移入區塊後觸發函式 |
| onHoverEnd | Function | 滑鼠移出區塊後觸發函式 |
| onLockAxis | Function | 鎖定指定軸時觸發函式 |
| onPress | Function | 按壓拖動時觸發函式 |
| onRelease | Function | 按壓並且放開時觸發函式 |
| type | String | 想監聽哪些行為,預設是wheel、touch、pointer
|
| target | Element | String | 想觸發的區塊,預設是viewport |
