套件 進場動畫

wow.js - 讓頁面 WOW 起來

郭怡玲 Sabrina Guo 2022/08/24 14:00:00
2209

WOW.js 跟上次講到的 AOS.js 都是可以依照滾動到物件的時候顯示動畫,

也經常使用在專案上,配合 animate.css 就可以使用許多不同的動畫效果囉!

 

一進到頁面你就會看到很多動畫的範例在你面前滾動,請點選左上的 GITHUB

查看許多細節設定,可以拉到網頁最下方的  Read the documentation

他就會一個步驟一個步驟教你使用!

 

step 1 :

請至 animate.css 引用他們已經幫我們寫好的動畫 CSS ,

可以選擇直接使用 CDN 

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/>

或是直接到 animate.css 網站左上的 GITHUB 貓頭 去下載 animate.css 檔案後.直接引入到自己的檔案

<link rel="stylesheet" href="css/animate.css">

 

step 2 :

請到 WOW.js 的 GITHUB  點擊 dist 資料夾進入後下載 wow.js 的檔案,

之後請至自己的頁面上引用以及初始化

<script src="js/wow.min.js"></script>
<script>
   new WOW().init();
</script>

 

step 3 :

把 class name : wow 加入到你想呈現動畫的地方

<div class="wow">
     我要做動畫
</div>

 

step 4 :

請至 animate.css  挑選想要呈現的動畫,滑鼠移到動畫文字後面會出現一個複製的按鈕,

點擊後即可直接複製 class name

因為我們是使用 animate.css 的動畫設定,因此我們也要配合他們使用動畫的 class name,

animate__animated + 你複製下來的動畫 class name 這樣才算是正確的使用唷!

<div class="wow animate__animated animate__fadeIn">
     我要做動畫
</div>

完成以上設定之後其實就大功告成啦!

但是!

要是我們想做的進場動畫 animate.css  卻沒有呢?

WOW.js  也可以搭配自己寫的動畫唷!

一樣要先寫好想做的動畫 css ,並給他一個 class 來放置此動畫的相關設定,

我寫了一個動畫是會順時針旋轉兩圈的動畫,

.round {
    animation: round 1s ease-in-out 1 forwards;
}

@keyframes round {
   from {
     transform: rotate(0deg);
   }
   to {
         transform: rotate(720deg);
   }
}

接下來一樣放到想呈現動畫的地方,

<div class="wow round">
     自定義動畫 round
</div>

完成!

WOW.js 也有一些其他的設定,讓你的動畫可以小小客製化一下,

data-wow-duration:動畫執行時間
data-wow-delay:動畫開始前的延遲
data-wow-offset:開始動畫的距離(與瀏覽器底部有關)
data-wow-iteration:動畫的重複次數

寫法如下:

    <div class="box wow animate__animated animate__fadeIn" data-wow-duration="2s" data-wow-delay="5s" data-wow-offset="80" data-wow-iteration="10">
        我要做動畫
    </div>

 

附上完整的程式碼:

// CSS

    .box {
        width: 150px;
        height: 150px;
        border-radius: 4px;
        background-color: lightgrey;
        margin: 5px;
        line-height: 150px;
        text-align: center;
        color: darkslategrey;
        font-size: 18px;
    }

    .round {
        animation: round 1s ease-in-out 1 forwards;
    }

    @keyframes round {
        from {
            transform: rotate(0deg);
        }

        to {
            transform: rotate(720deg);
        }
    }

// html

    <div class="box wow animate__animated animate__fadeIn" data-wow-duration="2s" data-wow-delay="5s" data-wow-offset="80" data-wow-iteration="10">
        我要做動畫
    </div>
    <div class="box wow round">
        自定義動畫 round
    </div>

//js

    new WOW().init();

 

 

郭怡玲 Sabrina Guo