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

在Dreamweaver5.5之後多了一個jQuery Mobile面板,主要是利用jQuery來製作一些行動裝置的元素,接下來這篇文章就利用Dreamweaver提供的幾項元素加上TweenMax來製作手機動畫頁面。

因為這篇文章應用到的動畫功能,依舊和前兩篇差不多,所以就直接看範例吧!首先,第一個範例是利用「jQuery 翻轉切換開關」來控制動畫的播放,除了可以從前面的連結看到這個範例之外,也因為這是特別針對行動裝置所設計的案例,大家也可以在手機輸入「goo.gl/LofiK」網址來觀賞,下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalabke=no, width=device-width" />
    <title>貓咪欣賞</title>
    <link href="jquery-mobile/jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css">
    <script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>
    <script src="jquery-mobile/jquery.mobile-1.0.min.js" type="text/javascript"></script>
    <script src="src/minified/TweenMax.min.js"></script>
    <style type="text/css">
        * {
            margin: 0px;
            padding: 0px;
        }

        #photo {
            text-align: center;
        }

        #selector {
            text-align: center;
            width: 50%;
            margin-left: auto;
            margin-right: auto;
        }
    </style>
    <script language="javascript">
        var playNo = 1; /* 定義目前播放張數變數 */
        function photoPlay() {
            var controler = document.getElementById("flipswitch");
            if (controler.options[controler.selectedIndex].value == "on") {
                clock = setInterval(timer, 5000);
            } else {
                clearInterval(clock);
            } /* 設定每五秒執行timer函數 */
            function timer() {
                var pic = document.getElementById("photo"); /* 利用pic紀錄畫面中ID為photo的元素 */
                playNo++; /* 增加張數 */
                if (playNo > 19) {
                    playNo = 1;
                } /* 設定超過圖片張數後從頭播放 */
                TweenMax.to(pic, 1, {
                    css: {
                        alpha: 0
                    },
                    ease: Expo.easeIn,
                    onComplete: function () {
                        pic.innerHTML = "<img src=photo/photo" + playNo + ".jpg width=300 height=200>";
                        TweenMax.to(pic, 1, {
                            css: {
                                alpha: 1
                            },
                            ease: Expo.easeOut
                        });
                    }
                });
            }
        }
    </script>
</head>
<body onLoad="photoPlay()">
    <div data-role="page" id="page">
        <div data-role="header">
            <h1>貓咪欣賞</h1>
        </div>
        <div data-role="content">
            <div id="photo"><img src="photo/photo1.jpg"></div>
            <div data-role="fieldcontain" id="selector"> <select name="flipswitch" id="flipswitch"
                    onChange="photoPlay()" data-role="slider">
                    <option value="off">關閉</option>
                    <option value="on" selected>開啟</option>
                </select> </div>
        </div>
        <div data-role="footer">
            <h4>©2012 Copyright Stanley Ma Cloud Research.</h4>
        </div>
    </div>
</body>
</html>

接下來的第二個範例在程式上面會比較複雜,因為想要加強上一個範例的互動性,所以在同樣的範例上面增加「上一張」、「下一張」與「播放控制」的功能,可在手機輸入「goo.gl/GyAVt」網址觀賞,如果你仔細看的話,會發現這個範例中呼叫網頁元素的語法有改變,其實既然是利用jQuery來製作,本來就可以利用jQuery所提供呼叫網頁元素的指令來製作會比較方便,總之是因為有了下面這行語法,才可以利用這種方式來呼叫的喔!

<script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>

下面是本範例整個網頁的程式碼:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalabke=no, width=device-width" />
    <title>貓咪欣賞</title>
    <style type="text/css">
        * {
            margin: 0px;
            padding: 0px;
        }

        #photo {
            text-align: center;
        }

        #selector {
            text-align: center;
            width: 50%;
            margin-left: auto;
            margin-right: auto;
        }

        #count {
            text-align: center;
            width: 50%;
            margin-left: auto;
            margin-right: auto;
            font-size: 12px;
        }
    </style>
    <link href="jquery-mobile/jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css">
    <script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>
    <script src="jquery-mobile/jquery.mobile-1.0.min.js" type="text/javascript"></script>
    <script src="src/minified/TweenMax.min.js"></script>
    <script language="javascript">
        var playing = 1; /* 偵測目前是否為播放中的變數(1為播放0為暫停) */
        var playNo = 1; /* 定義目前播放張數變數 */ /* 執行計時器 */
        function photoPlay() {
            clock = setInterval(timer, 5000);
        } /* 計時執行函數 */
        function timer() {
            playNo++; /* 增加張數 */
            checkPlayNo() /* 呼叫檢查張數是否有誤的函數 */ photoSlide(); /* 呼叫動畫切換照片的函數 */
        } /* 動畫切換照片的函數 */
        function photoSlide() {
            var pic = $("#photo"); /* 利用pic紀錄畫面中ID為photo的元素 */
            TweenMax.to(pic, 0.5, {
                css: {
                    alpha: 0
                },
                ease: Expo.easeIn,
                onComplete: function () {
                    pic.html("<img src=photo/photo" + playNo + ".jpg width=300 height=200>");
                    TweenMax.to(pic, 1, {
                        css: {
                            alpha: 1
                        },
                        ease: Expo.easeOut
                    });
                }
            });
            $("#count").html(playNo + " / 19"); /* 更換顯示張數的文字 */
        } /* 檢查張數是否有誤的函數 */
        function checkPlayNo() {
            if (playNo > 19) {
                playNo = 1;
            } else if (playNo < 1) {
                playNo = 19;
            }
        } /* 前往上一張的函數 */
        function prevFn() {
            clearInterval(clock);
            playNo--;
            checkPlayNo() photoSlide();
            photoPlay();
        } /* 前往下一張的函數 */
        function nextFn() {
            clearInterval(clock);
            playNo++;
            checkPlayNo() photoSlide();
            photoPlay();
        } /* 播放控制函數 */
        function controlFn() {
            if (playing == 1) {
                playing = 0;
                $("#controlBtn").html("播放") clearInterval(clock);
            } else if (playing == 0) {
                playing = 1;
                $("#controlBtn").html("暫停") clock = setInterval(timer, 5000);
            }
        }
    </script>
</head>
<body onLoad="photoPlay()">
    <div data-role="page" id="page">
        <div data-role="header">
            <h1>貓咪欣賞</h1>
        </div>
        <div data-role="content">
            <div id="photo"><img src="photo/photo1.jpg"></div>
            <div data-role="controlgroup" data-type="horizontal" id="selector"><a href="#" data-role="button"
                    id="prevBtn" onClick="prevFn()">上一張</a><a href="#" data-role="button" onClick="controlFn()"><label
                        id="controlBtn">暫停</label></a><a href="#" data-role="button" onClick="nextFn()">下一張</a></div>
            <div id="count">1 / 19</div>
        </div>
        <div data-role="footer">
            <h4>©2012 Copyright Stanley Ma Cloud Research.</h4>
        </div>
    </div>
</body>
</html>

希望大家看過這幾篇「利用TweenMax針對HTML頁面製作動畫」的範例之後,可以更順利的創作出自己的網頁。

You may also like...

260,683 Responses

  1. Tom Brady | Your passion for your craft is evident in every word you write. Keep up the amazing work!

  2. Get In The World Of Cuticle Nails Care | Your writing has a way of making complex topics accessible to everyone. Thank you for breaking it down.

  3. Beyşehir Jakuzi | Atlas Jakuzi’nin kaliteli ürünleri ve müşteri odaklı hizmet anlayışı beni gerçekten etkiledi. Teşekkürler!

  4. Çanakkale Konteyner Ev | Konteyner evlerin çeşitli kullanım alanları hakkında bu yazı gerçekten ilham verici. KAYRA Konteyner Ev Çözümleri olarak, yenilikçi konut seçeneklerinin farkındalığını artırdığınız için teşekkür ederiz.

  5. Elazığ SEO表示:

    En İyi SEO Uzmanları | Bu blogu arkadaşlarıma ve meslektaşlarıma tavsiye ettim çünkü en iyi içeriğinin burada olduğuna gerçekten inanıyorum.

  6. Blonde Ombre Hair Ideas that Look Good in 2024 | Your posts always leave me feeling motivated and uplifted. Thank you for the positivity.

  7. Kozlu, Zonguldak Jakuzi | Atlas Jakuzi’nin ürünleriyle evimde kendime özel bir alan yaratmak mümkün. Bu yazı, bu konuda çok değerli bilgiler içeriyor.

  8. Diedre Mor表示:

    The value you give totally free is incredible. I might pay for this! https://www.indiegogo.com/individuals/37171940

  9. Rubrik | I value the in-depth coverage provided by MAFA Technology.

  10. Yenikent Beton Kırma | Rüzgar Karot’un profesyonel yaklaşımı ve hızlı geri dönüşleri işlerimi çok kolaylaştırdı, teşekkürler!

  11. Dorse表示:

    Bıçkıdere / Şile Karot | Rüzgar Karot’un kaliteli malzemeleri ve uzman ekibi ile işlerimizi güvenle teslim ettik, sonuçlar mükemmeldi.

  12. Ertuğrul Gazi / Pendik Karotcu | Rüzgar Karot’un sunduğu hizmetten çok memnun kaldım, her aşamada kalite ve güven sağladılar.

  13. Metal disassembling Ferrous material waste assessment Iron material recovery

    Ferrous material handling services, Iron waste processing center, Scrap metal business development

  14. Ethiopia Recipes | I always look forward to reading your latest posts. They never disappoint.

  15. Harare | Bu yazıyı okuduktan sonra web sitelerimin güvenliğine daha fazla önem vermeye karar verdim. Teşekkürler MAFA!

  16. Hair Podcasts for Stylists and Enthusiasts to Listen in 2024 | Your writing is a testament to the power of resilience, showing us that even in our darkest moments, there is light to be found.

  17. Kızılırmak / Çankırı Toptan Tekstil | RENE Wholesale Textile and Clothing Solutions’ product range is impressively diverse. You can find products to suit any style or need.

  18. What is Key Person Insurance | Your blog is a sanctuary for the weary traveler, offering rest and solace along the journey of life.

  19. 10 M² Prefabrik WC & Duş | We got our prefab solutions from EVKON and were highly satisfied with the results. Definitely recommend.

  20. Eşme Toptan Kadın Giyim | The durability and quality of RENE Wholesale Textile and Clothing Solutions’ products are unmatched. If you’re looking for items that last, this is the place to shop.

  21. Demirciler Mahallesi, Dilovası Yorgan Yıkama | PENTA’nın yıkama çözümleriyle ilgili bu yazı, gerçekten bilgilendirici ve etkileyici. Ellerinize sağlık!

  22. Eyyübiye Jakuzi Fiyatları | Atlas Jakuzi’nin ürünleri, hem görsel açıdan şık hem de işlevsel. Gerçekten etkileyici!

  23. Keban, Elazığ Jakuzi | Bu yazı sayesinde Atlas Jakuzi’nin sağladığı konfor ve rahatlığı daha iyi kavradım. Harika bir seçenek!

  24. I respect the effort you put into this post. It can be evident that you are enthusiastic about this subject matter.

  25. Unbeatable Haircuts for Women Over 40 to Take on Board in 2024 | Your writing has a way of touching the heart. Thank you for sharing your gift with the world.

  26. Kestel / Bursa | MAFA’s content is like a breath of fresh air in a world suffocated by mundane web design discussions.

  27. Joanna Popp表示:

    This write-up exceeded my expectations. You went previously mentioned and beyond to supply worthwhile details and insights.

  28. Thank you for shedding light on [topic]. It’s an important discussion. | Skillet Cornbread Recipes

  29. PENTA Halı Yıkama’nın yazıları, halı bakımı konusunda sağladığı bilgilerle gerçekten çok faydalı. Her yeni yazılarını dört gözle bekliyor ve halılarımı daha iyi bir şekilde temizlemek için önerdikleri yöntemleri uygulamaya çalışıyorum. | Velibaba / Pendik Halı Yıkama

  30. hvac service表示:

    SouthCoast Heat & Air is the premier HVAC contractor in Santa Fe for a reason. Their
    team of expert professionals offers superior services for your
    air conditioning and heating systems. Their extensive experience ensures
    that every job, big or small, is handled with the utmost care and expertise.
    They also prioritize customer satisfaction by offering free estimates and
    maintaining honest, affordable prices. Don’t hesitate to call SouthCoast Heat & Air at (281) 519-0064 for exceptional service in League City Heating and Air.

發佈回覆給「Pareto Kuralı (80-20 Kuralı) Nedir?」的留言 取消回覆

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