Animate.cssを使ったアニメーションはページを開いた時点でアニメーションが開始されます。
ただスクロールに応じてアニメーションを開始したい事も多いと思います。
今回はそれを可能にするwow.jsについて解説していきます。
Animate.cssの使い方については以下の記事を参照下さい。
CSSで簡単にアニメーションを実装できる『Animate.css』の使い方【サンプルで解説】
続きを見る
また、スクロールに応じて簡単なフェードインなどをさせたい場合はこちらの記事がおすすめです。
inview.jsでスクロールして表示領域に入ったらフェードインさせる方法【jQueryプラグイン】
続きを見る
(有料になっていたらすいません🙇♂️)
Animate.cssをスクロールに応じてアニメーションできる『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>
あとはこちらのコードを</body>の直前あたりに書きます。
<script>
new WOW().init();
</script>
これで『Animate.css』と『wow.js』を使う準備が出来ました。
まずはサンプルを見てみます。
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名の確認方法は以下の記事を参照下さい。
CSSで簡単にアニメーションを実装できる『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
にしてあります(アニメーションの種類によっては相性が悪いオプションがあるかも知れません)
まとめ
今回はwow.jsの使い方を解説しました。
アニメーションの種類はたくさんあるので、ぜひいろいろ試してみて下さい。
以上になります。
【jQuery】スクロールして要素が画面内に入ったらフェードインさせる方法
続きを見る
inview.jsでスクロールして表示領域に入ったらフェードインさせる方法【jQueryプラグイン】
続きを見る