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

前一篇文章跟大家分享了如何利用TweenMax在HTML裡面製作基礎的動畫,接下來示範如何利用TweenMax來控制CSS的效果,當然前置作業跟之前相同,這邊就不多提,但在TweenMax內需加上CSS的控制項目,大致的語法如下:

TweenMax.to(物件,動畫秒數,{css:{樣式名稱:值},ease:動畫模式});

其實跟前篇文章大致相同,只是在動畫的部分要利用「css:{}」這段語法來包含欲更改的樣式,以下是更改寬度和高度的範例:

TweenMax.to(div,1,{css:{width:100, height:200},ease:Expo.easeOut});

接下來為各位示範一下在網頁上製作動畫的範例,這是第一個範例,主要為Div移動的效果,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening CSS Move</title>
    <style type="text/css">
        #box {
            height: 200px;
            width: 200px;
            position: absolute;
            background-color: #9CF;
        }

        /* box div 的樣式 */
    </style>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        window.onload = moveFn;

        function moveFn() {
            var div = document.getElementById("box"); /* 利用div變數儲存ID名稱為box的物件 */
            var divX = "0px" /* 利用變數儲存div預設的x位置 */
            var divY = window.innerHeight / 2 - 100 + "px"; /* 利用變數儲存div預設的y位置 */
            var moveX = window.innerWidth / 2 - 100 + "px"
            div.style.left = divX div.style.top = divY TweenMax.to(div, 1, {
                css: {
                    left: moveX
                },
                ease: Expo.easeOut
            });
        }
    </script>
</head>
<body style="background-color:#FFF">
    <div id="box"></div>
</body>
</html>

延續上面,接下來第二個範例程式碼大致與上面相同,只是增加了div變形和旋轉的效果,可以看得出來除了CSS本身的樣式之外,還可以利用TweenMax所提供的scale和rotation來製作動畫,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening CSS Move</title>
    <style type="text/css">
        #box {
            height: 200px;
            width: 200px;
            position: absolute;
            background-color: #9CF;
        }

        /* box div 的樣式 */
    </style>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        window.onload = moveFn;

        function moveFn() {
            var div = document.getElementById("box"); /* 利用div變數儲存ID名稱為box的物件 */
            var divX = "0px" /* 利用變數儲存div預設的x位置 */
            var divY = window.innerHeight / 2 - 100 + "px"; /* 利用變數儲存div預設的y位置 */
            var moveX = window.innerWidth / 2 - 100 + "px"
            div.style.left = divX div.style.top = divY TweenMax.to(div, 1, {
                css: {
                    left: moveX
                },
                ease: Expo.easeOut
            });
            TweenMax.to(div, 1, {
                css: {
                    scale: 2,
                    rotation: 90
                },
                delay: 1,
                ease: Expo.easeOut
            });
        }
    </script>
</head>
<body style="background-color:#FFF">
    <div id="box"></div>
</body>
</html>

接下來第三個案例加上了更換背景顏色的部分,背景顏色更換的部分,要注意語法跟css的背景顏色樣式名稱有所不同,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening CSS Move</title>
    <style type="text/css">
        #box {
            height: 200px;
            width: 200px;
            position: absolute;
            background-color: #9CF;
        }

        /* box div 的樣式 */
    </style>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        window.onload = moveFn;

        function moveFn() {
            var div = document.getElementById("box"); /* 利用div變數儲存ID名稱為box的物件 */
            var divX = "0px" /* 利用變數儲存div預設的x位置 */
            var divY = window.innerHeight / 2 - 100 + "px"; /* 利用變數儲存div預設的y位置 */
            var moveX = window.innerWidth / 2 - 100 + "px"
            div.style.left = divX div.style.top = divY TweenMax.to(div, 1, {
                css: {
                    left: moveX
                },
                ease: Expo.easeOut
            });
            TweenMax.to(div, 1, {
                css: {
                    scale: 2,
                    rotation: 90
                },
                delay: 1,
                ease: Expo.easeOut
            });
            TweenMax.to(div, 3, {
                css: {
                    backgroundColor: "#EEEEEE"
                },
                delay: 2,
                ease: Expo.easeOut
            });
        }
    </script>
</head>
<body style="background-color:#FFF">
    <div id="box"></div>
</body>
</html>

接下來第四個案例是利用TimelineMax來輔助製作這段動畫,可以看的出來上面範例都在使用delay來決定動畫播放順序,但在前面的文章中有提到TimelineMax可以協助我們來掌握動畫播放的順序,所以本範例更改為利用TimelineMax來製作動畫,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening CSS Move</title>
    <style type="text/css">
        #box {
            height: 200px;
            width: 200px;
            position: absolute;
            background-color: #9CF;
        }

        /* box div 的樣式 */
    </style>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        window.onload = moveFn;

        function moveFn() {
            var div = document.getElementById("box"); /* 利用div變數儲存ID名稱為box的物件 */
            var divX = "0px" /* 利用變數儲存div預設的x位置 */
            var divY = window.innerHeight / 2 - 100 + "px"; /* 利用變數儲存div預設的y位置 */
            var moveX = window.innerWidth / 2 - 100 + "px"
            div.style.left = divX div.style.top = divY
            var tMax = new TimelineMax;
            tMax.to(div, 1, {
                css: {
                    left: moveX
                },
                ease: Expo.easeOut
            });
            tMax.to(div, 1, {
                css: {
                    scale: 2,
                    rotation: 90
                },
                ease: Expo.easeOut
            });
            tMax.to(div, 3, {
                css: {
                    backgroundColor: "#EEEEEE"
                },
                ease: Expo.easeOut
            });
        }
    </script>
</head>
<body>
    <div id="box"></div>
</body>
</html>

看了上面的幾個案例之後,在這邊也來製作幾個比較完整的範例供大家參考,首先是第一個範例,利用文字連結來更換div內容的效果,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening CSS Sample 1</title>
    <style type="text/css">
        * {
            padding: 0px;
            margin: 0px;
        }

        body {
            font-size: 13px;
        }

        #box {
            height: 450px;
            width: 600px;
            margin-left: auto;
            margin-right: auto;
            background-color: #EEE;
        }

        /* box div 的樣式 (內容div) */
        #content {
            padding: 10px 10px 0px 10px;
            line-height: 26px;
            width: 500px;
            margin-left: auto;
            margin-right: auto;
        }

        /* content div 的樣式 (內容p) */
        #btn {
            height: 30px;
            width: 600px;
            text-align: center;
            margin-left: auto;
            margin-right: auto;
            padding-top: 10px;
        }

        #btn a {
            margin: 5px;
        }

        /* btn div 的樣式 (下方文字連結div) */
    </style>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        var intro1 =
            "<p style='text-align:center;'><img src='ford/p1.jpg' style='border:1px solid #000; background-color:#FFFFFF'></p><p>全新導入的運動模式(S-Mode),讓變速箱升檔時機往後遞延,以維持較高的引擎轉速再進行換檔,充分提升駕駛加速感受。在中高速行駛時,運動模式可提供更及時的降檔反應,使引擎仍可保持在扭力峰值的轉速範圍內,同時讓動力輸出對油門的反應更加靈敏,整體引擎動力的運動性大幅提升,創造最動感的馳騁體驗。</p>";
        var intro2 =
            "<p style='text-align:center;'><img src='ford/p2.jpg' style='border:1px solid #000; background-color:#FFFFFF'></p><p>高科技的雙離合器變速箱擁有自排、手排、上坡、下坡、高海拔修正、怠速、斜坡潛滑減緩、緊急安全八大模式。以手排齒輪箱為基礎,搭配平行排列濕式雙離合器機構,能在極短時間內完成換檔,沒有傳統自排變速箱的扭力頓挫感,加速也更加敏捷平順,且操作介面與傳統自排一樣簡易方便。</p>";
        var intro3 =
            "<p style='text-align:center;'><img src='ford/p3.jpg' style='border:1px solid #000; background-color:#FFFFFF'></p><p>全新高傳真CD/MP3/WMA音響主機,具備DSP數位音場設定、Clip失真檢測功能、智慧型音量控制、高傳真音效調整、AST電台頻道自動掃描儲存功能、位於中央扶手中AUX-IN功能的孔狀插槽與USB插槽(包含一般MP3裝置與iPod主機連結功能),是目前同等級房車中與iPod整合性最高的機種。</p>"; /* 以上為利用三個變數儲存不同的網頁內容 */
        window.onload = moveFn; /* 網頁載入時執行moveFn */
        function moveFn() {
            var div = document.getElementById("box"); /* 利用div變數儲存ID名稱為box的物件 */
            var intro = document.getElementById("content"); /* 利用intro變數儲存ID名稱為content的物件 */
            intro.innerHTML = intro1; /* 設定content的div內容為第一個連結的內容 */
            var tMax = new TimelineMax;
            tMax.from(div, 0.5, {
                css: {
                    scale: 0
                },
                ease: Expo.easeOut
            });
            tMax.from(intro, 1, {
                css: {
                    alpha: 0
                }
            }); /* 以動畫的方式呈現內容 */
        }

        function changeFn(no) {
            var div = document.getElementById("box"); /* 利用div變數儲存ID名稱為box的物件 */
            var intro = document.getElementById("content"); /* 利用intro變數儲存ID名稱為content的物件 */
            var tMax = new TimelineMax;
            tMax.to(intro, 0, {
                css: {
                    alpha: 0
                }
            });
            tMax.to(div, 0.5, {
                css: {
                    scale: 0
                },
                ease: Expo.easeOut
            });
            tMax.to(div, 0.5, {
                css: {
                    scale: 1
                },
                ease: Expo.easeOut
            });
            tMax.to(intro, 1, {
                css: {
                    alpha: 1
                }
            });
            switch (no) {
                case 1:
                    intro.innerHTML = intro1;
                    break;
                case 2:
                    intro.innerHTML = intro2;
                    break;
                case 3:
                    intro.innerHTML = intro3;
                    break;
            }
        }
    </script>
</head>
<body style="background-color:#FFF">
    <div id="box">
        <p id="content"></p>
    </div>
    <div id="btn"><a href="javascript:;" onClick="changeFn(1)">運動模式</a><a href="javascript:;"
            onClick="changeFn(2)">雙離合器</a><a href="javascript:;" onClick="changeFn(3)">整合音響</a></div>
</body>
</html>

接下來的範例是利用TweenMax來設計讓一個div永遠保持在畫面左邊中間的效果,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title>GreenSock HTMLTweening CSS Sample 2</title>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        window.onload = init; //網頁載入時執行init
        window.onscroll = init; //捲動網頁時執行init
        window.onresize = init; //網頁更改尺寸時執行init
        function init(){
            var div=document.getElementById("bannerDiv");
            //利用div變數儲存網頁上ID為bannerDiv的物件(即為放圖片的Div)
            var banner=document.getElementById("tweenMax");
            //利用banner變數儲存網頁上ID為tweenMax的物件(即為圖片本身)
            positionY= window.innerHeight/2-banner.height+window.pageYOffset;
            //利用PositionY儲存在畫面中Div應該出現的座標位置
            TweenMax.to(div,1,{css:{top:positionY},ease:Elastic.easeOut});
            //利用TweenMax將Div移動到上面所儲存的位置
        } 
    </script>
    <style type="text/css">
        #bannerDiv {
            height: 54px;
            width: 108px;
            position: absolute;
        }
    </style>
</head>

<body style="background-color:#FFF">
    <div id="bannerDiv"><img src="mw_tweenmax.gif" name="tweenMax" width="108" height="54" id="tweenMax" /></div>
    <div
        style="width:400px; height:2000px; background-color:#EEE; margin-left:auto; margin-right:auto; font-size:13px; text-align:center">
        網頁內容</div>
</body>

</html>

看完了上面幾個範例之後,相信大家可以利用TweenMax搭配HTML和Javascript來取代更多需要Flash才可以完成的效果了,祝大家設計順利!

You may also like...

41,059 Responses

  1. вывод из запоя в стационаре анонимно вывод из запоя в стационаре анонимно .

  2. как быстро оформить загранпаспорт как быстро оформить загранпаспорт .

  3. An Evolution Roulette Success Story You’ll Never Imagine 에볼루션 바카라 무료체험

  4. Why We Do We Love Mesothelioma Asbestos Claims (And You
    Should Also!) Mesothelioma lawyers

  5. JosephRom表示:

    別再被詐騙黑網騙了!3A最新娛樂城體驗金提供所有線上娛樂城的最新動向
    By 3ACasino / December 17, 2024
    隨著線上娛樂城的興起,越來越多的玩家選擇在網上娛樂平台上娛樂、賭博,並享受多元化的遊戲體驗。無論是體育賭博、老虎機還是各種賽事投注,線上3a娛樂城都提供了豐富的選擇。然而,隨著線上平台的繁榮,也伴隨著詐騙和不安全平台的風險。如何分辨正規可靠的娛樂城,並避免被詐騙或陷入黑網的陷阱,是每一位玩家必須謹慎對待的問題。

    本文將為您介紹線上娛樂城的基本資訊,並提供一些有效的辨識技巧,幫助您避免進入詐騙的黑網,同時介紹3A娛樂城如何為玩家提供最新的娛樂城動向,讓您玩得安心、玩得開心。

    一、線上3a娛樂城官網的發展與現狀
    隨著科技的進步和網絡的普及,線上3a娛樂城逐漸成為了全球賭博行業的重要一環。這些平台讓玩家可以在家中舒適的環境中進行各種賭博活動,無需親自到賭場,隨時隨地享受賭博樂趣。

    多元化的遊戲選擇
    目前,線上娛樂城提供的遊戲種類非常豐富,包括老虎機、撲克、賓果、輪盤、21點、體育賭博等各式各樣的選項。玩家可以根據自己的興趣選擇不同的遊戲,並參與到全球賭博市場的競爭中。
    技術創新
    隨著虛擬現實(VR)技術、人工智慧(AI)等技術的發展,許多娛樂城平台也在不斷創新,提升玩家的體驗。例如,利用VR技術打造身臨其境的賭博環境,讓玩家仿佛置身於真實的賭場;而AI技術則被用於提高遊戲的公平性和精確性。
    移動設備支持
    隨著智能手機和平板電腦的普及,許多線上3a娛樂城也推出了移動版本,使得玩家可以隨時隨地享受娛樂遊戲。不僅如此,這些平台還推出了適合不同操作系統(如iOS、Android)的應用程式,讓遊戲體驗更加便捷和流暢。
    二、線上3a娛樂城官網的詐騙風險
    儘管線上娛樂城提供了許多便利和娛樂選擇,但隨著市場的擴大,一些不法分子也進駐其中,利用各種詐騙手段來侵害玩家的利益。這些詐騙黑網的特點通常表現為以下幾個方面:

    假網站與假平台
    詐騙網站往往以低廉的優惠和豪華的宣傳吸引玩家上鉤,這些網站的設計和操作界面看起來非常專業,但實際上它們並沒有真正的運營許可證。玩家將個人資料和資金投入這些平台後,會發現自己無法提現或賺取的金額被無故凍結。
    誘人的獎金和優惠
    詐騙平台常常通過推出不切實際的“首存大獎”或“免費彩金”等優惠來吸引玩家,並誘使玩家進行大量投注。這些優惠通常都附帶不合理的條件,並在玩家達不到要求時取消所有贈金,甚至使玩家的存款受到影響。
    遊戲不公平與結果操控
    部分不法娛樂城會使用作弊手段操控遊戲結果,尤其是老虎機、輪盤等隨機遊戲,玩家在這些平台上的每次投注都無法得到公平對待,從而產生不合理的損失。
    不清楚的賭博條款與隱藏費用
    許多不正規的娛樂城平台會將一些不明確或隱藏的條款添加到賭博合約中。這些條款可能涉及到存款、取款或遊戲的條件,使玩家無法順利提現,甚至可能被扣除不明費用。
    三、如何識別正規3a娛樂城官網?
    要避免進入詐騙黑網,首先要學會如何識別正規的3a娛樂城。以下是幾個辨別真偽的關鍵指標:

    合法授權與運營許可證
    正規的娛樂城平台會擁有合法的運營許可證,這些證書一般來自於知名的賭博監管機構,如英國賭博委員會(UKGC)、馬耳他博彩局(MGA)等。玩家可以在平台的底部或關於我們的頁面查看這些資訊,以確保該平台的合法性。
    使用加密技術保障安全
    正規平台會採用最新的SSL加密技術來保護玩家的個人資訊和資金安全。玩家可以在平台網址欄查看是否以“https”開頭,並且確認網頁上的支付方式是安全的。
    透明的支付與提款政策
    正規娛樂城會提供清晰明確的存款和提款流程,並且在玩家要求提款時不會無理拖延。平台的條款和條件應該是簡單且易於理解的,沒有隱藏費用。
    客戶服務與口碑
    正規3a娛樂城會提供全天候的客戶服務支持,並能迅速解答玩家的問題。玩家可以查看該平台的用戶評價與口碑,了解其他玩家的真實經驗。
    四、3a娛樂城官網:為玩家提供最新的娛樂城動向
    作為專業的線上娛樂平台,3A娛樂城致力於為玩家提供全面的娛樂資訊,並協助玩家避開詐騙黑網。我們提供以下幾項服務:

    實時更新娛樂城資訊
    3A娛樂城會定期更新最新的線上3a娛樂城動向,包括合法平台的推薦、遊戲的評測、賭博行業的動態等,讓玩家能夠隨時掌握市場變化。
    專業的遊戲分析與技巧分享
    我們的專業團隊會分享各種遊戲技巧、策略與賠率分析,幫助玩家提高遊戲的勝率。同時,還會提供對熱門遊戲的深入剖析,讓玩家能夠更好地理解遊戲規則,避免上當受騙。
    安全保障與信譽保證
    3A娛樂城嚴格篩選合作平台,所有推薦的娛樂城都經過嚴格審查,保證其合法性和安全性。玩家可以放心選擇平台進行遊戲,享受公正、安全的賭博體驗。
    專業的客戶服務
    我們提供全天候的客戶服務,隨時解答玩家在遊戲過程中的問題,並提供專業的遊戲指導與問題解決方案。
    隨著線上娛樂城市場的發展,選擇一個安全、合法、可靠的娛樂平台對於每位玩家來說至關重要。避免被詐騙黑網騙取資金,保持理智並選擇正規的3a娛樂城,是享受線上賭博娛樂的基本前提。3A娛樂城作為領先的娛樂平台,將繼續為玩家提供最新的娛樂城動向和專業的遊戲資訊,幫助您在安全、公正的環境中享受遊戲樂趣。
    https://aaawin88.org/3acasino/

  6. рейтинги процессоров для пк topcpu.ru .

  7. рейтинг процессоров amd http://www.topcpu.ru .

  8. рейтинг игровых процессоров https://topcpu.ru .

  9. рейтинг игровых процессоров http://www.topcpu.ru .

  10. Guide To Buy C1 E License Online: The Intermediate Guide To Buy C1 E License Online
    Buy C1 E License Online

  11. рейтинг процессоров для игр http://www.topcpu.ru/ .

  12. сравнение процессоров intel https://topcpu.ru/ .

  13. какой процессор лучше http://topcpu.ru/ .

  14. Misted Glass Replacement It’s Not As Hard As You Think misted double glazing repairs

  15. быстрое оформление загранпаспорта быстрое оформление загранпаспорта .

  16. рейтинг игровых процессоров https://topcpu.ru .

  17. Wallacefex表示:

    slot oyunlar?: az parayla cok kazandiran slot oyunlar? – en kazancl? slot oyunlar?

  18. BradleyEdino表示:

    denemebonusuverensiteler25 denemebonusuverensiteler25 deneme bonusu veren siteler

  19. novoporno表示:

    You aree soo awesome! I don’t suppose I’ve truly
    redad smething ike this before. So wonderful too findd someone with some unique thoughts oon tis subjject matter.

    Really.. thanks ffor starting this up. Thiis site is sometfhing thaqt iis required onn thhe internet, someone
    wit a little originality!

  20. сравнение процессоров для пк https://www.topcpu.ru .

  21. сравнение производительности процессоров topcpu.ru .

  22. рейтинги процессоров для пк http://www.topcpu.ru .

  23. BradleyEdino表示:

    deneme bonusu veren siteler [url=http://denemebonusuverensiteler25.com/#]denemebonusuverensiteler25[/url] yeni deneme bonusu veren siteler

  24. JustinImivy表示:

    GAMELANTOGEL

  25. какой процессор лучше topcpu.ru .

發佈留言

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