摘要:模塊化與插件式的結構保持了核心引擎的輕量,包非常小基本上低于。在代碼中表示它會把元素初始化為。回調函數提供了豐富的回調函數來操作動畫效果。首先來創建一個的函數觸發回調函數,只需要添加下面這句代碼就可以了就可以了,非常簡單。
最近把GreenSock的一些知識以及一些開發技巧使用gitbook整理了一本在線的電子書,GreenSock電子書可以去看看,下面是一個基本入門的簡化版本,更詳細的可以去看在線的版本,里面有詳細的介紹以及一些高級應用技巧,GreenSock電子書
今天就來開始學習下牛逼的javascript動畫庫GASP(greensock)。
GreenSock在Flash動畫時代久負盛名,并且GreenSock的維護團隊與時俱進,推出了以javascript為核心的GreenSock,在Flash和HTML5項目中,你可以使用相同的動畫工具集,同樣的API,同樣的開發體驗,同樣關注性能。
它具有以下優點:
1、速度快。GSAP專門優化了動畫性能,使之實現和CSS一樣的高性能動畫效果。
2、輕量與模塊化。模塊化與插件式的結構保持了核心引擎的輕量,TweenLite包非常小(基本上低于7kb)。GSAP提供了TweenLite, TimelineLite, TimelineMax 和 TweenMax不同功能的動畫模塊,你可以按需使用。
3、沒有依賴。
4、靈活控制。不用受限于線性序列,可以重疊動畫序列,你可以通過精確時間控制,靈活地使用最少的代碼實現動畫。
5、任何對象都可以實現動畫。
下面就開始GreenSock之旅吧。
開始開始之前先來了解下GSAP動畫平臺四個插件的不同功能。如下圖所示:
開始之前我們先準備一些基本的代碼,如下所示:
html:
css:
body { background-color: #262626; font-family: "Open Sans", sans-serif; overflow: hidden; } #box { background-color: #88ce02; position: absolute; top: 50%; left: 50%; width: 100px; height: 100px; transform: translate(-50%, -50%); z-index: 1; } .boxSmall { position: absolute; background-color: #70a40b; position: absolute; bottom: 0; left: 0; width: 25px; height: 75px; z-index: 2; }
當然還得引入GreenSock文件,這里我們引入的是TweenMax這個全功能的js文件,為了操作方便我們還需要引入jquery來選擇和操作DOM。
https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js
這里為了演示方便,使用了codepen這個代碼平臺來運行我們編寫的效果。
demo地址
OK,準備工作已做好,下面來讓它動起來!
我們這里操作的物體是這個ID為box的盒子。首先把它用一個變量存起來,方便后面來操作。在codepen里的js區域編寫下面的代碼:
var $box = $("#box");TweenLite.to()方法
下面就是讓它動起來,可以使用TweenLite.to()方法來使元素動起來。比如,讓元素移動到瀏覽器左邊的邊緣,我們就可以使用TweenLite.to()方法。
下面是TweenLite.to()方法的示意圖:
在codepen中加入下面的代碼:
TweenLite.to($box, 0.7, {left: 0});
上面的代碼會在0.7秒之內把$box元素從CSS中定義的位置移動到body的邊緣。如下所示:(鼠標移動到右下角,有一個return按鈕,點擊以下就會重新運行代碼,就可以看到效果了)。
demo地址
不過,你應該發現了一個奇怪的小問題。那就是$box元素只有一半露出來了,應該是全部顯示的,這是為什么呢?
這是因為我們在CSS中定義了transform: translate(–50%, –50%),這個時候可以通過定義元素的X的值來修正這個小bug。
TweenLite.to($box, 0.7, {left: 0, x: 0});TweenLite.from方法
下面來看下TweenLite.from這個方法。
在上面的例子上,我們修改代碼如下:
TweenLite.from($box, 2, {x: "-=200px", autoAlpha: 0});
這個方法是用來使元素從定義在.from()方法里的位置運動到在CSS中定義的位置。
運行這個例子,我們會看到元素從元素左邊200px的位置運動到元素在CSS中定義的位置。
autoAlpha方法是GSAP中一個特別的屬性,它把opacity和visibility兩個屬性合二為一了。
在代碼中autoAlpha: 0表示它會把元素初始化為opacity:0;visibility:hidden。當執行動畫效果的時候它會把visibility的值設置為inherit以及opacity值設置為1。從而產生一個漸現的效果。
TweenLite.set()有時候,我們只是想設置元素的一些CSS屬性并不需要動畫效果,比如,重設元素的位置。
這個時候就可以使用GreenSock提供的.set()方法。
去掉我們前面編寫的代碼除了定義好的$box變量,編寫下面的代碼:
TweenLite.set($box, {x: "-=200px", scale: 0.3}); TweenLite.set($box, {x: "+=100px", scale: 0.6, delay: 1}); TweenLite.set($box, {x: "-50%", scale: 1, delay: 2});
運行上面的代碼,可以看到元素只是單純的在改變屬性并沒有動畫效果。
在上面的代碼中,我們使用delay這個屬性來制定元素屬性改變的延遲時間。
要注意一點的是,在最后一個序列中我們重新設置元素的位置為x: ‘-50%’。
TweenLite.fromTo()方法最后來說一說TweenLite.fromTo這個方法。
顧名思義,這個方法我們可以定義元素的起始位置:
TweenLite.fromTo($box, 2, {x: "-=200px"}, {x: 150});
把上面的代碼放入到codepen中,就可以看到運行的動畫效果。
我們定義了元素從左邊200px的位置開始運動到指定的位置。
x:150會覆蓋在CSS中定義的transform: translate(–50%, –50%)的樣式,用新的transform: matrix(1, 0, 0, 1, 150, -50);樣式來代替。
緩動曲線為了使動畫效果更有趣,符合真實的物體運動效果。這個時候緩動曲線函數就派上用場了,GreenSock也提供了各種的運動曲線。
如果使用的是TweenMax的話,它已經包含了EasePack。
EasePack包含下面的這些運動曲線:
1、Back 2、SlowMo 3、StppedEase 4、RoughEase 5、Bounce 6、Circ 7、Elastic 8、Expo 9、Sine
下面來添加ease:Power4.easeInOut來看看實際的效果。
TweenLite.fromTo($box, 2, {x: "-=200px"}, {x: 150, ease:Power4.easeInOut});
試著添加下面的代碼,看看有什么有趣的效果發生?
TweenLite.to($box, 0.4, {top: "100%", y: "-100%", ease:Bounce.easeOut, delay: 2}); TweenLite.to($box, 0.7, {x: "-=200px", y: "-100%", ease:Back.easeInOut, delay: 3}); TweenLite.to($box, 0.8, {x: "-=200px", y: "-100%", ease:Back.easeInOut, delay: 4.2}); TweenLite.to($box, 2.5, {top: "50%", y: "-50%", ease:Power0.easeNone, delay: 5}); TweenLite.to($box, 2.5, {x: "+=400px", ease:Elastic.easeInOut, delay: 7.7}); TweenLite.to($box, 2.5, {x: "-=400px", rotation: -720, ease: SlowMo.ease.config(0.1, 0.7, false), delay: 10.4});
具體各種運動曲線的效果可以去這個地址看看。
回調函數GreenSock提供了豐富的回調函數來操作動畫效果。
這里以.fromTo()方法來說明它的用法。
比如,我們想要在動畫開始的時候來觸發回調函數。首先來創建一個start的函數:
function start(){ console.log("start"); }
觸發回調函數,只需要添加下面這句代碼就可以了onStart:start就可以了,非常簡單。
TweenLite.fromTo($box, 2, {x: "-=200px"}, {x: 150, ease:Power4.easeInOut, onStart: start});
打開開發者工具,就可以看到輸出的相關信息。
你也可以添加onUpdate和onComplete來觸發對應的回調函數:
function start(){ console.log("start"); } function update(){ console.log("animating"); } function complete(){ console.log("end"); }
onUpdate會在動畫的每一幀觸發;onComplete會在動畫結束的時候觸發。
看看最后的效果。
demo地址
最后再來一些好的tips:
1、任何的CSS屬性需要從有-的寫法變為駝峰式的寫法。比如background-color修改為backgroundColor等。
2、CSS中的transform:rotate()變為rotation。
3、另外在GSAP中的2Dtransform-scaleX, scaleY, scale, skewX, skewY,x, y, xPercent,和 yPercent 的使用方法可以去這個視頻看看。
4、如果使用SublimeText來作為開發工具,可以下載GSAP這個代碼片段。
5、如果你使用JSHint和JSLint作為代碼質量檢測工具,可以去這看看它在GSAP中的使用方法。
遇到問題隨時查看GreenSock的文檔。
另外推薦一些有用的學習資源:
Jump Start: GSAP JS
Getting Started Guide
GSAP Forum
GreenSock course at Noble Desktop in New York
GreenSock course workbook
GreenSock Workshop
更詳細的可以去看看我整理的在線版本GreenSock電子書
文章來自于Simple GreenSock Tutorial – Your first steps with GSAP有刪減。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80920.html
摘要:實現效果動畫分解燈光閃爍文字出現水流心電圖知識點可盡情騷擾歐巴了解基本的知識點寫在前面寫過第一篇文章后動畫案例一再回頭看發現代碼太多,根本沒耐心去看完。操作這里就不再贅述了,在動畫案例一中有說到轉文件。四段水流都是這種方式來移動。 實現效果 showImg(https://segmentfault.com/img/bVT51P?w=613&h=568); 動畫分解 1.燈光閃爍2.文字...
摘要:在上面的代碼中設置為,表示以倍的速度來運行這個動畫效果。當然在動畫效果中,運動曲線是必不可少的,提供了豐富的運動曲線來設置動畫的運動效果。整個動畫效果就完成了,通過這個簡簡單單的效果,可以發現使用來編寫動畫效果是多么的方便簡單。 在我網站svgtrick開一個新系列,主要是使用GreenSock來編寫和實現動畫效果,通過實際的效果來熟悉GreenSock的各個方法和技巧。 關于Gree...
摘要:原作者效果內容是一個溫度顯示儀器,上方一個當前溫度顯示,下方還有一個溫度刻線。原教程使用了布局,給整個容器加上了的高度,讓在沒有內容的時候也能被沾滿。設置上部分占高度的,下部分為。溫度的數據要從的實例中獲取,然后進行一個輸出。 前言 所謂站在巨人的肩膀上學習,是因為這個例子是來自于一個來自于國外的每周插件的欄目的教程,所以我很嚴肅的說清楚這點!這篇文章是自己通過這個例子的學習后,的一些...
摘要:雖然沒有視覺效果,但這就是基本的值動畫。有專門的位置可以查詢緩動函數。另外,不要期望在不支持的瀏覽器上做動畫。是專業動畫庫,在大部分情況下,它也具備更好的動畫性能。 說到在網頁里創建動畫,你可能很快會想到jQuery的animate()方法,或者css3的animation和transition。現在,本文將介紹另一個web動畫的可選方案,GSAP。 GSAP的全名是GreenSock...
閱讀 2382·2021-11-24 10:26
閱讀 2582·2021-11-16 11:44
閱讀 1699·2021-09-22 15:26
閱讀 3570·2021-09-10 11:11
閱讀 3185·2021-09-07 10:25
閱讀 3624·2021-09-01 10:41
閱讀 1008·2021-08-27 13:11
閱讀 3505·2021-08-16 11:02