Animate.cssの使い方まとめ。サイトに手軽にアニメーションを実装 [CSS3ライブラリ]

リッチなUIのWEBサイトを簡単に実装できるCSSライブラリ「Animate.css」の実装手順、実現できるアニメーションの種類、テクニックを整理しました。
Pure CSSだけでも充分に動きのあるサイトを作ることができる時代になり、素敵なデザインのサイトやサービスが増えました。
ただし、自分でCSSを書くのは大変。便利なライブラリがあれば使いたいところです。本記事ではCSS3アニメーションのライブラリとしては最も有名だと思われる「Animate.css」について、利用手順・アニメーション種類・実装テクニックを整理しました。
例えば、このような動きを簡単に実現することができます。
↓ちなみにこのアニメーションが突然動かなくなって困っているケースが多いようです。詳細は後述しますが、もしアニメーションが動かない場合は視差効果の設定を見直してください。
| サンプル |
|---|
Animate.cssのダウンロード(あるいはCDN記述)と設定方法。
Animate.cssの公式サイトからライブラリをダウンロードして自サーバに上げるか、あるいはCDNを利用して設定します。
Animate.css公式サイト

| サイト | Animate.css公式サイト |
|---|---|
| チュートリアル | GitHubのページに記載 |
| ライセンス | MIT |
CSSファイルをダウンロードして設定する
- 公式サイトの「Download Animate.css」のリンクからCSSファイルをダウンロード
- 自分のサーバにダウンロードファイルをアップロードする
- HTMLのヘッダーに外部リソースとして読み込み設定する
1 2 3 | <head> <link rel="stylesheet"href="animate.min.css"> </head> |
CSSファイルをCDNを利用して設定する
- CDNをHTMLのヘッダーに外部リソースとして読み込み設定する
1 2 3 | <head> <link rel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css"> </head> |
Animate.cssを有効活用するチュートリアル。
Animate.cssは様々なアニメーションが簡単に実装できますが、通常どおり設定するだけでは1度だけアニメーションするのみとなります。
そこで、後述するオプション「infinite」を使ってアニメーションを繰り返すように設定したり、jQuery/Javascriptを併用して必要な時にアニメーションするようにコントロールすることが実用的な使い方となります。
簡単で実践的な使い方のチュートリアルとして、以下のサンプルを紹介します。
基本的な使い方
サンプル
HTMLサンプルコード ※ダブルクリックでコピペできます
1 | <div class="animated bounce infinite">サンプル</div> |
基本的な使い方としては要素のclassに「animated」「※実装したいアニメーションのクラス名」「※オプション名」の3つを設定するだけです(アニメーションのクラス名やオプション名は後述の一覧にまとめています)。
このサンプルでは「bounce」というアニメーションに、「infinite」というオプション(永久にアニメーションを繰り返すオプション)を付けています。
クリック時(.click)にアニメーションするように実装する
サンプル ※クリックで動作します
HTMLサンプルコード ※ダブルクリックでコピペできます
1 | <div id="sample-animate-click"class="animated">サンプル</div> |
スクリプトサンプルコード ※ダブルクリックでコピペできます
1 2 3 | $('#sample-animate-click').click(function(){ $('#sample-animate-click').addClass('animated infinite pulse'); }); |
こちらはコントロールにクリックイベントを仕掛けています。クリックするとCSSが付与され、アニメーションが開始します(アニメーションを止めるのは実装していません)。
ホバー時(.hover)にアニメーションするように実装する
サンプル ※マウスホバーで動作します
HTMLサンプルコード ※ダブルクリックでコピペできます
1 | <div id="sample-animate-hover"class="animated">サンプル</div> |
スクリプトサンプルコード ※ダブルクリックでコピペできます
1 2 3 4 5 6 7 8 | $('#sample-animate-hover').hover( function(){ $('#sample-animate-hover').addClass('animated infinite rubberBand'); }, function(){ $('#sample-animate-hover').removeClass(); } ); |
こちらはコントロールにホバーイベントを仕掛けています。マウスホバーしているときは、アニメーションのクラスを付与し、ホバーが外れたタイミングで「removeClass」でアニメーションのCSSを除去しています。
本記事のサンプルではjQueryを利用しています。再現するにはHTMLのヘッダーにjqueryのCDNを設定するなどの対応が必要ですのでご注意ください。

アニメーションが動かない!Google Chromeだけ、iPhoneだけで突然CSSが動かなくなった場合は「視差効果を減らす」の設定を見直す。
Mozilla FirefoxやMicrosoft Edgeではアニメーションが動作するのに、「Google Chromeだけ突然動かなくなった」「iPhoneで見たときに動かない」というケースが多く発生しているようです。
ブラウザのキャッシュをクリアしても問題が改善しない場合、「視差効果を減らす」設定が効いてしまっていることが考えられます。この設定は煩雑なアニメーションを停止して快適に利用したい人のための設定であり、ブラウザ側がOS側の設定を参照してアニメーションの動作を停止します。「Animate.css」はこの機能に対応したCSS設定が施されているため、「視差効果を減らす」設定がONになっているとアニメーションが動作しません。
特にGoogle Chromeは新しいバージョンになって、この設定が効いてくるようになり、突然アニメーションが動かなくなってしまう人が増えているようです。
Windows環境の場合は「コントロールパネル」-「システム」-「システムの詳細設定」-「パフォーマンスの設定」の設定内容を確認します。ここで「パフォーマンスを優先する」の設定になっていたり、「カスタム」で「Windows内のアニメーション コントロールと要素」のチェックがOFFになっているとアニメーションが動作しなくなるため、チェックをONに変更します。
iOSの場合は「設定」-「一般」-「アクセシビリティ」-「視差効果を減らす」の設定内容を確認しましょう。
もし、この視差効果に対応する設定自体を削除してしまいたい場合は、「Animate.css」のCSSファイルを開いて、末尾のメディアクエリに記述されている「prefers-reduced-motion」の設定を削除すればOKです。
CSSの「prefers-reduced-motion」設定は、ユーザーがアニメーションや動作を最少化するよう要求したことを検知するものです。OS側で「視差効果を減らす」設定をONにしている場合、CSSはこのメディア特性の内容を有効にしてしまいます。
Animate.cssで実現できるアニメーションの種類とオプション設定まとめ。
Animate.cssで実装できるアニメーションの種類一覧
| bounce | サンプル |
|---|---|
| flash | サンプル |
| pulse | サンプル |
| rubberBand | サンプル |
| shake | サンプル |
| headShake | サンプル |
| swing | サンプル |
| tada | サンプル |
| wobble | サンプル |
| jello | サンプル |
| bounceIn | サンプル |
| bounceInDown | サンプル |
| bounceInLeft | サンプル |
| bounceInRight | サンプル |
| bounceInUp | サンプル |
| bounceOut | サンプル |
| bounceOutDown | サンプル |
| bounceOutLeft | サンプル |
| bounceOutRight | サンプル |
| bounceOutUp | サンプル |
| fadeIn | サンプル |
| fadeInDown | サンプル |
| fadeInDownBig | サンプル |
| fadeInLeft | サンプル |
| fadeInLeftBig | サンプル |
| fadeInRight | サンプル |
| fadeInRightBig | サンプル |
| fadeInUp | サンプル |
| fadeInUpBig | サンプル |
| fadeOut | サンプル |
| fadeOutDown | サンプル |
| fadeOutDownBig | サンプル |
| fadeOutLeft | サンプル |
| fadeOutLeftBig | サンプル |
| fadeOutRight | サンプル |
| fadeOutRightBig | サンプル |
| fadeOutUp | サンプル |
| fadeOutUpBig | サンプル |
| flipInX | サンプル |
| flipInY | サンプル |
| flipOutX | サンプル |
| flipOutY | サンプル |
| lightSpeedIn | サンプル |
| lightSpeedOut | サンプル |
| rotateIn | サンプル |
| rotateInDownLeft | サンプル |
| rotateInDownRight | サンプル |
| rotateInUpLeft | サンプル |
| rotateInUpRight | サンプル |
| rotateOut | サンプル |
| rotateOutDownLeft | サンプル |
| rotateOutDownRight | サンプル |
| rotateOutUpLeft | サンプル |
| rotateOutUpRight | サンプル |
| hinge | サンプル |
| jackInTheBox | サンプル |
| rollIn | サンプル |
| rollOut | サンプル |
| zoomIn | サンプル |
| zoomInDown | サンプル |
| zoomInLeft | サンプル |
| zoomInRight | サンプル |
| zoomInUp | サンプル |
| zoomOut | サンプル |
| zoomOutDown | サンプル |
| zoomOutLeft | サンプル |
| zoomOutRight | サンプル |
| zoomOutUp | サンプル |
| slideInDown | |
| slideInLeft | |
| slideInRight | |
| slideInUp | |
| slideOutDown | |
| slideOutLeft | |
| slideOutRight | |
| slideOutUp | |
| heartBeat | サンプル |
設定できるオプション。
- 「infinite」:アニメーションを繰り返す
- 「delay-2s」「delay-3s」「delay-4s」「delay-5s」:X秒遅れて表示
- 「slow」「slower」「fast」「faster」:アニメーションのスピード設定









