利用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...

32,956 Responses

  1. Сервисный центр предлагает ремонт бесперебойников belkin рядом отремонтировать бесперебойника belkin

  2. kgpml лучшая платформа для игры на деньги Play

  3. Профессиональный сервисный центр по ремонту компьютеров и ноутбуков в Москве.
    Мы предлагаем: ремонт макбук москва
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  4. Kupit_zsPi表示:

    Заказать качественный бетон в Нижнем Новгороде, Купить качественные бетонные смеси в Нижнем Новгороде, Бетон в Нижнем Новгороде: актуальные предложения, Купить бетон от проверенных поставщиков в Нижнем Новгороде, Надежные бетонные заводы в Нижнем Новгороде, по лучшим условиям, с высоким качеством, с индивидуальным подходом, с доставкой
    купить бетон в нижнем новгороде https://1beton-52.ru/ .

  5. JosephFam表示:

    furosemide 40 mg: furosemida – lasix 40mg

  6. Сервисный центр предлагает починка стиральных машин de dietrich ремонт стиральной машины de dietrich в москве

  7. сервисный центре предлагает починить телевизор на дому москва – ремонт телевизоров самсунг на дому москва

  8. Sergiohex表示:

    http://prednisolone.pro/# prednisone daily

  9. ArnvPaish表示:

    The threshold of 32 1 SD less than the case mean was selected as a reasonable lower bound for clinically significant presence of symptoms maximum scale score, 105.
    Spectacular products about ED at what is tadalafil generic for . ED problems quickly resolved!
    Note: One 40 capsule jar of FourGuard for Dogs contains one complete treatment 10 days for ONE medium size dog.

  10. ArnfPaish表示:

    In particular, the EPA state that exposure to molds can irritate the eyes, lungs, nose, skin and throats of individuals, even if they do not have a mold allergy.
    for the drugs you need and get a low price of tadalafil sildenafil will also be low.
    Despite some overlap between grief and depression, they are different.

  11. MasonGed表示:

    Бонус Код Букмекерской Мелбет При Регистрации – это код для новых пользователей, так как он дает денежные призы на первый депозит новым игрокам. С их помощью вы получите на 30% больше возврата средств, чем при стандартной регистрации, или фрибет. Букмекерская контора Мелбет работает на рынке беттинга уже довольно долго. За время существования она успела получить доверие многотысячной аудитории игроков и сформировать четкую стратегию взаимодействия с клиентами. Для всех участников БК доступны различные поощрения, подарки и акции. Среди них – промокод новинка, расширяющий список привилегий для нового, или активного пользователя.

  12. Davidmer表示:

    neurontin brand name 800mg: neurontin 150mg – neurontin 100mg price

  13. Профессиональный сервисный центр по ремонту компьютеров и ноутбуков в Москве.
    Мы предлагаем: ремонт макбук про
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  14. сервисный центре предлагает ремонт матрицы телевизора стоимость – ремонт телевизоров в москве недорого

  15. DouglasHoapy表示:

    1xBet
    1xBet offers daily promo codes that provide bonuses such as free bets, deposit matches, or free spins. These codes are valid for the day they are issued and can be used to boost your betting experience.

  16. Arenda_czka表示:

    Лучшие предложения по аренде квартир на сутки|Выберите лучшее жилье на короткий срок|Лучшие варианты аренды квартир для вашего отдыха|Простой способ аренды квартиры на короткий срок|Эксклюзивные предложения аренды квартир на короткий срок|Идеальные квартиры на сутки для вашего отдыха|Выбор жилья на короткий срок по вашему вкусу|Выберите идеальное жилье на короткий срок|Уникальные апартаменты на сутки для вашего отдыха|Эксклюзивные предложения аренды апартаментов на сутки|Выбор апартаментов на короткий срок для вашего отдыха|Находите лучшие варианты жилья и бронируйте сейчас|Выберите лучшее жилье на короткое проживание|Бронируйте уютное жилье на сутки онлайн|Выбирайте комфортные апартаменты на короткий срок|Выбор апартаментов на короткий срок по лучшим ценам|Уютные квартиры на короткий срок по доступной стоимости|Удобный поиск и бронирование апартаментов на сутки|Идеальные предложения аренды квартир на сутки|Выбор квартир на короткий срок для вашего отдыха
    снять квартиру на час в гомеле снять квартиру на час в гомеле .

  17. Kennethleave表示:

    jili com
    JILI SLOT GAMES: Sự Lựa Chọn Hàng Đầu Cho Các Tín Đồ Casino Trực Tuyến

    JILI Casino là một nhà phát hành game nổi tiếng với nhiều năm kinh nghiệm trong ngành công nghiệp giải trí trực tuyến. Tại JILI, chúng tôi cam kết mang đến cho người chơi những trải nghiệm độc đáo và đẳng cấp, thông qua việc đổi mới không ngừng và cải thiện chất lượng từng sản phẩm. Những giá trị cốt lõi của chúng tôi không chỉ dừng lại ở việc tạo ra các trò chơi xuất sắc, mà còn tập trung vào việc cung cấp các tính năng vượt trội để đáp ứng nhu cầu của người chơi trên toàn cầu.

    Sự Đa Dạng Trong Các Trò Chơi Slot
    JILI nổi tiếng với loạt trò chơi slot đa dạng và hấp dẫn. Từ các slot game cổ điển đến những trò chơi với giao diện hiện đại và tính năng độc đáo, JILI Slot luôn đem đến cho người chơi những phút giây giải trí tuyệt vời. Các trò chơi được thiết kế với đồ họa sống động, âm thanh chân thực và những vòng quay thú vị, đảm bảo rằng người chơi sẽ luôn bị cuốn hút.

    Ưu Điểm Nổi Bật Của JILI Casino
    Đổi mới và sáng tạo: Mỗi trò chơi tại JILI Casino đều mang đến sự mới mẻ với lối chơi hấp dẫn và giao diện bắt mắt.
    Chất lượng cao: JILI không ngừng cải tiến để đảm bảo mỗi sản phẩm đều đạt chất lượng tốt nhất, từ trải nghiệm người chơi đến tính năng trò chơi.
    Nền tảng đa dạng: JILI Casino cung cấp nhiều loại game khác nhau, từ slot, bắn cá đến các trò chơi truyền thống, phù hợp với mọi sở thích của người chơi.
    Chương Trình Khuyến Mại JILI
    JILI Casino không chỉ nổi bật với chất lượng game mà còn thu hút người chơi bởi các chương trình khuyến mại hấp dẫn. Người chơi có thể tham gia vào nhiều sự kiện, từ khuyến mãi nạp tiền, hoàn trả đến các chương trình tri ân dành riêng cho thành viên VIP. Những ưu đãi này không chỉ tăng cơ hội chiến thắng mà còn mang lại giá trị cộng thêm cho người chơi.

    Nổ Hủ City Và Các Trò Chơi Hấp Dẫn Khác
    JILI không chỉ có slot games mà còn cung cấp nhiều thể loại game đa dạng khác như bắn cá, bài và nhiều trò chơi giải trí khác. Nổi bật trong số đó là Nổ Hủ City – nơi người chơi có thể thử vận may và giành được những giải thưởng lớn. Sự kết hợp giữa lối chơi dễ hiểu và các tính năng độc đáo của Nổ Hủ City chắc chắn sẽ mang lại những khoảnh khắc giải trí đầy thú vị.

    Tham Gia JILI Casino Ngay Hôm Nay
    Với sự đa dạng về trò chơi, các tính năng vượt trội và những chương trình khuyến mại hấp dẫn, JILI Casino là sự lựa chọn không thể bỏ qua cho những ai yêu thích trò chơi trực tuyến. Hãy truy cập trang web chính thức của JILI ngay hôm nay để trải nghiệm thế giới giải trí không giới hạn và giành lấy những phần thưởng hấp dẫn từ các trò chơi của chúng tôi!

  18. AlfredHag表示:

    Buy semaglutide pills Rybelsus 7mg semaglutide

  19. Gartandabsex表示:

    Как поднять настроение с помошью приколов. ржачные анекдоты
    https://www.cossa.ru/profile/?ID=255844

  20. Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт цифровой техники воронеж

  21. DouglasHoapy表示:

    1xBet
    1xBet sometimes offers no deposit bonus codes, allowing users to claim bonuses without making a deposit. These codes are highly sought after as they provide a risk-free way to explore the platform and win real money.

  22. Davidmer表示:

    lasix 100 mg: buy furosemide – lasix 20 mg

  23. ArnoldDRODA表示:

    lasix generic: furosemide online – lasix tablet

  24. CharlesWAb表示:

    купить строительную бытовку
    Купить жилую бытовку 149 900? (в т.ч. НДС)
    Аренда бытовки для проживания
    8 000? в месяц (в т.ч. НДС)
    Внешний размер 5850х2400х2400(в)
    Каркас сварной, верхняя и нижняя рамка из стального гнутого швеллера 120х50х3, стойки стальные из уголка 75х5 или гнутые 90х90х20
    Кровля металлическая сварная толщиной 1,5 мм
    Защитная окраска грунт-эмалью 3в1 металлокаркаса и кровли
    Черновой пол стальной оцинкованный

  25. JoeGed表示:

    Букмекерская компания Мелбет или известная в других кругах Melbet, имеет огромное количество игроков в онлайне. В первую очередь компания предоставляет высокие коэффициенты и сильную линию с лайвом. Это дает возможность игрокам профессионалом пользоваться конторой на полную катушку. Плюс, с помощью промокода вы получите бонус 10400 тысяч рублей. Без промо кода до 8000 тысяч. промокоды от блоггеров представляют собой бонусные возможности, которые дает сама букмекерская контора. Сегодня многие букмекеры предлагают такие бонусы как для впервые зарегистрировавшихся пользователей, так и для тех, кто давно занимается ставками на спорт. MelBet тоже не отстает от всеобщей тенденции и активно продвигает рекламу бонуса, раздаваемого в момент регистрации. Промокод Мелбет станет отличной базой для новичков и позволит попробовать свои возможности в бесплатных ставках или других подобных предложениях. Как получить такой промокод и применить его на деле, рассмотрим далее.

  26. Sergiohex表示:

    https://prednisolone.pro/# can you buy prednisone over the counter in canada

  27. Gartandabsex表示:

    Как поднять настроение с помошью мемов. Свежие анекдоты
    http://www.zpu-journal.ru/forum/view_profile.php?UID=312722

發佈留言

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