スクロールに応じてアニメーションが発生するwow.jsの使い方

Web制作

こんにちは!フォトグラファー&Web制作のじゅんぺい(@junpei_sugiyama)です!

今回は、

スクロールに応じてAnimate.cssのアニメーションを実行させる方法ある?

 

 

といった方に対する記事となります。

前回の記事でAnimate.cssを使ったアニメーションの実装方法をご紹介しましたが、これはページを開いた時点でアニメーションが開始されます。

ただスクロールに応じてアニメーションを開始したい事も多いと思います。

今回はそれを可能にするwow.jsについて解説していきます。

wow.jsの使い方

今回はAnimate.cssと合わせて使うので、Animate.cssも読み込みます。

Animate.cssとwow.js、両方ともCDNで読み込む方法で進めていきます。

以下のコードをheadタグに入れます。

<!-- animate.css -->
<link
  rel="stylesheet"
  href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.6.2/animate.min.css"
/>
<!-- wow.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js"></script>

あとは上記のコードの下にこちらのコードを書きます。

<script>
new WOW().init();
</script>

</body>の直前あたりでいいかと思います。

これでwow.jsとAnimate.cssを使う準備が出来ました。

まずはサンプルを見てみます。

See the Pen
wow.js + Animate.css
by junpei (@junpei-sugiyama)
on CodePen.

コードの解説

まずは先ほどのアニーションからHTMLを見てみます(上から3つだけ)

<div class="box wow animated fadeInUp">fadeInUp</div>
<div class="box wow animated fadeInDown">fadeInDown</div>
<div class="box wow animated fadeInLeft">fadeInLeft</div>

これはAnimate.cssの記事と共通する部分もありますが、class名の解説をします(boxは緑のボックス用のclassです)

class名 内容
animated 共通のclass(必須)
fadeInUp アニメーションの種類
infinite ループ(今回はなし)
wow wow.jsを使う為のclass

この中でAnimate.cssの時にはなかったのは wow というclassです。

これがスクロールに応じてアニメーションを開始させる為に必要になります。

CSSは1点だけ補足します。

.box {
  animation-fill-mode: forwards;
}

この animation-fill-mode: forwards; はフェードアウトした要素をそのまま消えたままにしておく為に必要なプロパティです。

これがないとフェードアウトが完了した後に要素が出現してしまいます。

アニメーションの種類とclass名の確認方法は以下の記事を参照下さい。

簡単にアニメーションを実装できるAnimate.cssの使い方

オプション

wow.jsにはいくつかオプションがあります。

data属性名 内容
data-wow-duration アニメーションの時間
data-wow-delay スクロールが要素に到達してからアニメーションが発動するまでの時間
data-wow-offset スクロールが要素に到達してからアニメーションが発動する距離
data-wow-iteration アニメーションの繰り返し回数

こちらがそれぞれ設定したサンプルになります。

See the Pen
wow.js + Animate.css(オプション)
by junpei (@junpei-sugiyama)
on CodePen.

上記はそれぞれ次のように設定しました。

data属性名 内容
data-wow-duration=”3s アニメーションの時間
data-wow-delay=”1s スクロールが要素に到達してからアニメーションが発動するまでの時間
data-wow-offset=”150 スクロールが要素に到達してからアニメーションが発動する距離
data-wow-iteration=”2 アニメーションの繰り返し回数

これらのオプションは組み合わせて使う事も出来ます。

ちなみにdata-wow-delayをフェードインで設定したら変な挙動をしたので、bounceにしてあります(アニメーションの種類によっては相性が悪いオプションがあるかも知れません)

 

以上です。