# TweenMax GASP入門介紹 TweenMax是一個好用的動畫工具, 我覺得比jQuery更直覺,這系列筆記是根據 mike 成智遠老師 的TweenMax動態特效課程 整理 ### 先備知識: css animation 概念 javascript 基本概念 如:else if / Function / for ![](https://i.imgur.com/CKqbiAs.png) 1.物件id =>#box移動的物件 2.多少秒數執行完成 =>動作的屬性 3.x:"700px" 屬性 => 水平位移 700px ```javascript= TweenMax.to("#box",1,{x:"500px"}) ``` ### 注意點 * 似jQuery 的id命名方式 * * 在網頁的世界裡面,(x,y) 起點是從左上角開始 * * 第三個參數 是用物件包著{} [ demo](https://codepen.io/chiakilalala/pen/MWypJjV) 由左向右移動的車子(圖片為已完成行動時) ![](https://i.imgur.com/MKnlC87.png) ## Scale 比例縮放 效果出現對話框 ![](https://i.imgur.com/laCjmdm.png) 目的:如何使用 TweenMax 把東西縮放? ### 第一步 針對物件對話 做變化 transftom:scale(0,0) 是縮到最小到看不到 ```javascript= #dialogBox{ position: absolute; top: -20px; left: -30px; width: 259px; height: 196px; transform: scale(0, 0);//對話框縮到做小 background-image: url("https://upload.cc/i1/2020/08/25/rBMF6j.png") } ``` 我們就針對這個來做變化 > 在很多程式的概念裡面,0是為小,1為最大。 > ```javascript= TweenMax.to("#dialogBox",1, { scaleX:1 ,//控制x方向大小 scaleY:1 ,//控制Y方向大小 }) ``` ### 第二步 動畫物件位置 我們希望對話框可以從右下角跳出來,所以從 transform-Origin 變動位置,那記得一開始所說的物件最開始都是(0,0)左上角 ![](https://i.imgur.com/L3DXYSb.png) 中間為(50,50) 右下方為(100,100) ```javascript= TweenMax.to("#dialogBox",1, { scaleX:1 ,//控制x方向大小 scaleY:1 ,//控制Y方向大小 transformOrigin:"100% 100%",//動畫縮放中心點位置,希望從右下角開始 }) ``` ### 第三步 速率變化 https://greensock.com/ease-visualizer ease 是 TweenMax 針對動畫速率的屬性,我們可以根據上面網址知道各個效果是如何的? ![](https://i.imgur.com/OX2ltEN.png) 根據面板下面紅色框起來 複製下來放到 ease:"bounce.inOut" 測試你想要的動畫速率屬性。 ```javascript= TweenMax.to("#dialogBox",1, { scaleX:1 ,//控制x方向大小 scaleY:1 ,//控制Y方向大小 transformOrigin:"100% 100%",//動畫縮放中心點位置 印為希望從右下角開始 ease: "bounce.inOut"//控制動畫速率的部分 https://greensock.com/ease-visualizer }) ``` [demo](https://codepen.io/chiakilalala/pen/qBZrrRa?editors=0110) ## CSS 屬性控制 用TweenMax 來操作css部分來產生動畫 效果:頁面載入時,畫面由左到右 畫面寬度由 0% 到100% ```javascript= #box{ width: 0%; /*畫面設定為寬度0%*/ height: 100%; background-color: cadetblue; background-size:cover; background-image: url("https://upload.cc/i1/2020/08/25/cz9MS1.jpg"); } ``` ```javascript= TweenMax.to("#box", 3, { width:"100%", ease: Bounce.easeOut//加上動畫速率使為生動 } ); ``` [demo](https://codepen.io/chiakilalala/pen/dyMvWRq?editors=1010)