利用TweenMax針對HTML頁面製作動畫 – 基礎篇

馬老師在前一篇文章介紹過GreenSock的Tweening Platform在Flash中的應用後,接下來要跟各位分享「GreenSock Animation Platform」(GSAP),那麼多英文聽起來好像很複雜,就讓我為各位簡單介紹一下吧!

首先GreenSock一開始真的是針對Flash的Tween(補間)寫了許多好用的Class供設計師們使用,在不斷的更新和強化之後,目前已經出到v11(第十一版)了,但只要熟悉網路平台的朋友應該都知道,近幾年Flash在網頁上的應用,除了遊戲之外正在減少中,所以在GreenSock的v12(第十二版)中,加入了JavaScript的Class,也就是說我們可以在HTML網頁中使用TweenLite或TweenMax…等來製作動畫,也藉此版本把發展計劃的名稱從「GreenSock Tweening Platform」(GreenSock補間平台)更名為「GreenSock Animation Platform」(GreenSock動畫平台),主要是把「Tweening」換成「Animation 」,因為前者主要為Flash在使用的名詞,而後者就屬於比較廣義的「動畫」,所以未來就算你還在使用Flash的TweenMax,他也是屬於「GreenSock Animation Platform」中的一員了。

在網頁上GreenSock目前提供使用的有「TweenLite」、「TweenMax」、「TimelineLite」、「TimelineMax」這四個項目,雖比Flash來的少,不過也是最常用的幾項,相信可以幫助設計師們在不使用Flash的情形之下,製作許多不同凡響的動畫效果,另外關於這四項的差別也跟Flash版本一樣,之前有介紹過在這邊就不多提了,接下來就看一下簡單的使用方式吧。

首先跟Flash版本一樣,必須先下載備用載點)JS的Class,下載解壓縮後,會有以下的資料夾:

  • docs:參考文件。
  • examples:裡面有很多html的展示,對於想要了解本Class非常有幫助。
  • src:主要Class資料夾。

在網頁上主要使用的資料夾為src,而若是網頁要使用這個Class,跟Flash需要先import,不過HTML的指令如下:

<script src="src/minified/TweenMax.min.js"></script>

接下來就開始針對HTML和Javascript進行編輯,先看看我製作的第一個範例,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTML Tweening Basic</title>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        function scaleSmall() {
            var photo = document.getElementById("cat");
            TweenMax.to(photo, 2, {
                width: 300,
                height: 200
            });
        }
    </script>
</head>
<body style="font-size:13px; background-color:#FFF">
    <p style="text-align:center"><img src="cat.jpg" alt="波妞 大頭照" name="cat" width="600" height="400" id="cat"
            onClick="scaleSmall()"></p>
    <p style="text-align:center">請點擊貓咪照片</p>
</body>
</html>

基本上就是點擊後圖片縮小的效果,第10行即為TweenMax製作動畫的程式,當然利用TweenMax製作動畫,其中動畫類型也是重要的參數,第二個案例就加上了動畫類型,大家可以參考動畫變化的形式,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening ease</title>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        function scaleSmall() {
            var photo = document.getElementById("cat");
            TweenMax.to(photo, 2, {
                width: 300,
                height: 200,
                ease: Elastic.easeOut
            });
        }
    </script>
</head>
<body style="font-size:13px; background-color:#FFF">
    <p style="text-align:center"><img src="cat.jpg" alt="波妞 大頭照" name="cat" width="600" height="400" id="cat"
            onClick="scaleSmall()"></p>
    <p style="text-align:center">請點擊貓咪照片</p>
</body>
</html>

除此之外,動畫變化的大小,當然也可以利用比例來計算,第三個範例就是用圖片寬度和高度比例來進行動畫縮小,各位也可以參考,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening ease</title>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        function scaleSmall() {
            var photo = document.getElementById("cat");
            TweenMax.to(photo, 2, {
                width: photo.width * 0.8,
                height: photo.height * 0.8,
                ease: Elastic.easeOut
            });
        }
    </script>
</head>
<body style="font-size:13px; background-color:#FFF">
    <p style="text-align:center"><img src="cat.jpg" alt="波妞 大頭照" name="cat" width="600" height="400" id="cat"
            onClick="scaleSmall()"></p>
    <p style="text-align:center">請連續點擊貓咪照片</p>
</body>
</html>

當然在原先TweenMax可以使用的參數「onStart」、「onUpdate」、「onComplete」也一樣可以使用,第四個範例就加上了這部分的程式碼,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening onCompleteSock HTMLTweening onComplete</title>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        function scaleSmall() {
            var photo = document.getElementById("cat");
            TweenMax.to(photo, 2, {
                width: 300,
                height: 200,
                ease: Elastic.easeOut,
                onComplete: okFn
            });
        }

        function okFn() {
            alert("動畫執行完畢");
        }
    </script>
</head>
<body style="font-size:13px; background-color:#FFF">
    <p style="text-align:center"><img src="cat.jpg" alt="波妞 大頭照" name="cat" width="600" height="400" id="cat"
            onClick="scaleSmall()"></p>
    <p style="text-align:center">請點擊貓咪照片</p>
</body>
</html>

看完了以上的範例,大家對於TweenMax在網頁中的使用應該有基本的認識,當然接下來就要看你的創意和HTML、Javascript、CSS的操作能力了,在這邊也製作一個較完整的範例供大家參考,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening Sample 1</title>
    <style type="text/css">
        #yahoo {
            height: 240px;
            width: 560px;
            margin-right: auto;
            margin-left: auto;
            overflow: hidden;
        }

        /* yahoo Div 樣式(最外層) */
        #yahoo #pic {
            height: 210px;
            width: 2240px;
            overflow: hidden;
            left: 0px;
            position: relative;
        }

        /* 放置圖片Div樣式 */
        #yahoo #btn {
            text-align: right;
            float: left;
            height: 30px;
            width: 560px;
        }

        /* 下方文字連結Div */
        #yahoo #btn a {
            margin-left: 5px;
            padding-top: 2px;
            padding-right: 4px;
            padding-bottom: 2px;
            padding-left: 4px;
        }

        /* 下方文字連結樣式 */
    </style>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        function moveFn(no) {
            var banner = document.getElementById("pic");
            TweenMax.to(banner, 1, {
                css: {
                    left: (no - 1) * -560
                },
                ease: Quad.easeInOut
            });
        }
    </script>
</head>
<body style="font-size:13px; background-color:#FFF">
    <div id="yahoo">
        <div id="pic"><img src="yahoo/y1.jpg" id="p1" width="560" height="210"><img src="yahoo/y2.jpg" width="560"
                height="210"><img src="yahoo/y3.jpg" width="560" height="210"><img src="yahoo/y4.jpg" width="560"
                height="210"></div>
        <div id="btn"><a href="javascript:;" onClick="moveFn(1)">1</a><a href="javascript:;" onClick="moveFn(2)">2</a><a
                href="javascript:;" onClick="moveFn(3)">3</a><a href="javascript:;" onClick="moveFn(4)">4</a></div>
    </div>
</body>
</html>

在網頁上有TweenMax協助我們製作動畫,我們更可以把心思放在排版、樣式和內容上面,省去了撰寫計算動畫程式的時間,希望大家可以利用它做出很棒的作品!最後附上本範例的原始檔給大家參考。

You may also like...

4,462 Responses

  1. I blog quite often and I truly thank you for your information. The article has truly peaked my interest. I’m going to take a note of your website and keep checking for new information about once a week. I subscribed to your Feed too.

  2. Way cool! Some extremely valid points! I appreciate you penning this write-up plus the rest of the website is also very good.

  3. Darrelherse表示:

    slot casino siteleri: en yeni slot siteleri – yasal slot siteleri

  4. Today, I went to the beach front with my kids. I found a sea shell and gave it to my 4
    year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her ear and screamed.
    There was a hermit crab inside and it pinched her ear.

    She never wants to go back! LoL I know this is totally off topic but I had to tell someone!

    my web blog … is provadent for real

  5. Web Site表示:

    What’s up, its nice article regarding media print, we all
    be aware of media is a wonderful source of information.

  6. useful site表示:

    Pretty great post. I simply stumbled upon your blog
    and wanted to say that I have truly loved surfing around
    your weblog posts. In any case I will be subscribing on your feed and I am
    hoping you write once more soon!

  7. I don’t know whether it’s just me or if everybody else experiencing issues with your blog.
    It seems like some of the text in your posts are running off the
    screen. Can somebody else please comment and let me know if this
    is happening to them too? This could be a issue with my
    internet browser because I’ve had this happen previously.
    Cheers

    Feel free to surf to my blog … lottery defeater software complaints

  8. Darrelherse表示:

    casino slot siteleri: 2024 en iyi slot siteleri – en guvenilir slot siteleri

  9. Escorts表示:

    Pretty! This has been a really wonderful post. Thanks for providing this info.

  10. Right here is the perfect site for everyone who wants to understand this topic.
    You understand so much its almost tough to argue with you (not that I
    really would want to…HaHa). You certainly put a new spin on a subject that’s been written about for decades.

    Wonderful stuff, just wonderful!

    My web site; fitspresso supplement

  11. KevinSounc表示:

    https://sweetbonanza.network/# sweet bonanza siteleri

  12. My partner and I absolutely love your blog and find a lot of your post’s
    to be just what I’m looking for. Does one offer guest
    writers to write content for yourself? I wouldn’t mind
    composing a post or elaborating on many of the subjects you write with regards to here.
    Again, awesome blog!

    my web page: the genius wave reviews

  13. Darrelherse表示:

    slot bahis siteleri: slot bahis siteleri – casino slot siteleri

  14. Thanks for finally writing about > 利用TweenMax針對HTML頁面製作動畫 –
    基礎篇 – 馬老師 雲端研究室 is
    provadent any good

  15. you could have an important blog right here! would you like to make some invite posts on my blog?

  16. obviously like your website but you have to take a look
    at the spelling on quite a few of your posts. Several of them are rife with spelling problems
    and I in finding it very troublesome to tell the truth
    then again I’ll certainly come back again.

  17. pronerve 6表示:

    It’s awesome to pay a visit this web page and reading the views
    of all colleagues concerning this post, while I am also eager of getting know-how.

    My web-site; pronerve 6

  18. Good day! I could have sworn I’ve been to this site before
    but after browsing through a few of the articles I realized
    it’s new to me. Regardless, I’m definitely delighted I stumbled upon it
    and I’ll be bookmarking it and checking back often!

    Here is my homepage; provadent tablets

  19. What’s up mates, fastidious post and fastidious arguments commented here, I am in fact enjoying by these.

    Also visit my blog … herpesyl walgreens

  20. Darrelherse表示:

    en iyi slot siteleri: deneme bonusu veren siteler – slot siteleri

  21. I am regular visitor, how are you everybody? This post posted
    at this web page is in fact pleasant.

    Stop by my blog lung clear pro reviews

  22. I am regular visitor, how are you everybody?
    This paragraph posted at this web site is really pleasant.

    my web-site; https://www.facebook.com/prodentim-ireland-105343188909137

  23. Good answers in return of this query with firm arguments and describing all about that.

    Have a look at my web-site is lottery defeater software a scam

  24. If you are going for most excellent contents like I do, only visit this
    web site all the time because it gives quality contents, thanks

    my website: the growth matrix step by step youtube reddit

  25. Greetings! I know this is kind of off topic but I was wondering
    if you knew where I could locate a captcha plugin for my comment form?
    I’m using the same blog platform as yours and I’m having trouble
    finding one? Thanks a lot!

    Feel free to surf to my web-site – Ultra K9 Pro Reviews

  26. prodentim.表示:

    No matter if some one searches for his vital thing, thus he/she needs to be available that
    in detail, so that thing is maintained over here.

    My web-site prodentim.

  27. I’m really inspired together with your writing skills and also with the
    format to your weblog. Is that this a paid subject matter or did you customize
    it yourself? Anyway stay up the excellent quality writing, it’s rare to see a great weblog like this one nowadays..

    Also visit my website; tonic greens herpes

  28. Darrelherse表示:

    guvenilir slot siteleri: slot siteleri bonus veren – slot bahis siteleri

  29. KevinSounc表示:

    https://slotsiteleri.bid/# canl? slot siteleri

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。