利用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,442 Responses

  1. Jamesric表示:

    nolvadex only pct: п»їdcis tamoxifen – nolvadex pct

  2. Jamesric表示:

    lasix pills: cheap lasix – furosemide 100mg

  3. Stephenzek表示:

    http://lisinopril.guru/# prinivil brand name

  4. You’re so cool! I do not think I have read through a single thing like that before. So great to discover somebody with genuine thoughts on this subject matter. Seriously.. many thanks for starting this up. This web site is something that’s needed on the web, someone with some originality.

  5. Myebrr表示:

    cheap deflazacort for sale – order calcort online cheap brimonidine oral

  6. Vqijgu表示:

    purchase besifloxacin generic – buy sildamax sildamax price

  7. I was able to find good information from your content.

  8. Proxiesbuy表示:

    Very good blog! Do you have any suggestions for aspiring writers? I’m planning to start my own blog soon but I’m a little lost on everything. Would you suggest starting with a free platform like WordPress or go for a paid option? There are so many choices out there that I’m completely confused .. Any suggestions? Kudos!

  9. Thank you so much for giving everyone remarkably memorable possiblity to check tips from this website. It is always so beneficial and packed with a great time for me personally and my office co-workers to search your website more than 3 times weekly to read through the latest secrets you have. And definitely, I am always pleased with your staggering tips and hints served by you. Selected 3 tips in this post are absolutely the most efficient I’ve ever had.

  10. insurance表示:

    Your style is really unique in comparison to other folks I’ve read stuff from. Thanks for posting when you have the opportunity, Guess I’ll just book mark this web site.

  11. DouglasGed表示:

    india pharmacy mail order: Top online pharmacy in India – buy medicines online in india

  12. DouglasGed表示:

    world pharmacy india: Top mail order pharmacies – online shopping pharmacy india

  13. Oliverkak表示:

    Заказать такси https://taxi-gukovo.ru эконом в Гуково дешево с отзывами, ценами и телефонами, онлайн заказ.

  14. DouglasGed表示:

    indian pharmacy online: Online India pharmacy – indian pharmacy paypal

  15. Proxies Buy表示:

    It’s a shame you don’t have a donate button! I’d certainly donate to this fantastic blog! I suppose for now i’ll settle for bookmarking and adding your RSS feed to my Google account. I look forward to new updates and will talk about this blog with my Facebook group. Talk soon!

  16. This post will assist the internet visitors for creating new
    blog or even a blog from start to end.

  17. DouglasGed表示:

    best online ed meds: cheap ed medicine – pills for ed online

  18. DouglasGed表示:

    best online ed meds: Cheap ED pills online – cheapest ed medication

  19. DouglasGed表示:

    top 10 pharmacies in india: Online pharmacy – cheapest online pharmacy india

  20. DouglasGed表示:

    reputable mexican pharmacies online: mexico drug stores pharmacies – mexican border pharmacies shipping to usa

  21. provadent表示:

    Needed to create you a little word to be able to thank you as before for your pleasing guidelines you’ve shown here. It’s incredibly generous with you giving publicly all that most of us could possibly have advertised as an e book to make some cash on their own, and in particular seeing that you might have tried it if you wanted. The strategies additionally worked to provide a good way to be aware that other people have similar zeal much like my very own to understand way more when it comes to this matter. I am certain there are numerous more fun occasions up front for people who scan your site. provadent reviews

  22. provadent表示:

    I needed to put you the little bit of observation in order to give thanks again for the great secrets you have shared in this article. This has been really extremely open-handed of you to provide unhampered just what a few individuals would have advertised as an e book to make some money for themselves, mostly considering that you could have tried it in the event you decided. The advice also served as the easy way to know that many people have the same eagerness just as my personal own to realize a lot more around this issue. I am sure there are many more pleasurable periods in the future for many who view your blog post. provadent reviews

  23. alpha bites表示:

    I intended to post you that tiny note to help give thanks the moment again for your personal lovely thoughts you have shared at this time. It was simply extremely generous of people like you to present unhampered precisely what a few individuals could possibly have offered for sale for an e-book to help make some cash on their own, notably seeing that you might have done it if you desired. Those things as well worked like a fantastic way to know that the rest have a similar eagerness the same as my own to find out great deal more pertaining to this matter. I know there are many more enjoyable instances ahead for individuals that check out your blog. alpha bites gummies

  24. DouglasGed表示:

    pills for erectile dysfunction online: ed pills online – cheap ed pills online

  25. DouglasGed表示:

    mexico drug stores pharmacies: mexico pharmacy win – medicine in mexico pharmacies

  26. Leonardpar表示:

    https://indiapharmacy.shop/# indian pharmacies safe

  27. I am really enjoying the theme/design of your weblog.

    Do you ever run into any internet browser compatibility issues?
    A few of my blog visitors have complained about my site
    not operating correctly in Explorer but looks great in Chrome.
    Do you have any ideas to help fix this issue?

    Also visit my homepage: nitric boost ultra

  28. Leonardpar表示:

    https://indiapharmacy.shop/# online pharmacy india

  29. DouglasGed表示:

    erectile dysfunction meds online: Best ED meds online – discount ed meds

  30. DouglasGed表示:

    buying from online mexican pharmacy: Best pharmacy in Mexico – mexico drug stores pharmacies

發佈留言

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