ちょっとしたアニーメーションを付けるのに便利なAninmate.css ですが、実際に取り込んでみると、アニメーションの開始タイミングや、アニメーション時間、アニメーションの動作幅など、調整したいことも多々あるかと思います。
下記はbounceInというアニメーションを使っていますが、もう少しアニメーションの動作幅を控えめにしたいですよね。
テスト(デフォルト)
テスト(調整後)
「Webサイトからお問い合わせが来ない…」とお悩みの方必見!
当サイトのノウハウを詰め込んだ『Web集客の無料ガイド』をご提供
使い方
Animate.cssの使い方はいたってシンプルです。
- Animate.css サイトより、animate.cssファイルをダウンロードします。
- ダウンロードしたCSSファイルを読み込む
<link rel="stylesheet" href="animate.min.css">
- アニメーションを付与した箇所にアニメーション名とanimatedクラスを追加する
例:bounceInを追加したい場合
<h1 class="bounceIn animated">テスト</h1>
調整方法
開始時間、アニメーション時間の調整
アニメーションの開始時刻や、アニメーションする時間の調整は下記のクラスを追加するだけです。
(例)
<p class="bounceIn animated" id="animate">テスト</p>
CSS
p#animate { animation-duration: 2s; /* アニメーションの時間 */ animation-delay: 2s; /* アニメーション開始時間 */ animation-iteration-count: infinite; /* アニメーションの繰り返し回数 */ }
動作幅の調整
動作幅の調整は直接CSSファイルの修正を行うか、使うクラスをコピーしてCSSを上書きする必要があります。
それではbounceInを例に調整方法をご紹介します。
animate.cssを開くと下記の行があります。
@-webkit-keyframes bounceIn { }
@keyframes bounceIn { }
この二つがbounceInのアニメーションを行っています。
@-webkit- は、ベンダープレフィックスと呼ばれているもので、iOS8以下やAndroid4.4.4以下対応する場合は修正が必要です。必要ない場合はソースごと消しても大丈夫です。
bounceIn{ } の中は下記が書かれています。
from, 20%, 40%, 60%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } to { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); }
アニメーションの開始時 from(0%) 〜 アニメーションの終了時 to(100%)まで、transform: scale3d(1,1,1); で動作が書かれています。
scale3d() は、空間での拡大縮小を行うCSS関数です。
構文:scale3d(sx, sy, sz)
sx
拡大縮小ベクトルの横座標を表す
sy
拡大縮小ベクトルの縦座標を表す
sz
拡大縮小ベクトルの Z成分を表す
細かいことを気にせず、アニメーションの幅を縮めたい場合は、数値を1に近づける、アニメーションの幅を広げたいのあれば数値を1から遠ざければOKです。
実際に心地よい数値を入れ替えてみてください。
(例)
@keyframes bounceIn { from, 20%, 40%, 60%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.98, 0.98, 0.98); transform: scale3d(0.98, 0.98, 0.98); } 20% { -webkit-transform: scale3d(1.02, 1.02, 1.02); transform: scale3d(1.02, 1.02, 1.02); } 40% { -webkit-transform: scale3d(0.99, 0.99, 0.99); transform: scale3d(0.99, 0.99, 0.99); } 60% { opacity: 1; -webkit-transform: scale3d(1.01, 1.01, 1.01); transform: scale3d(1.01, 1.01, 1.01); } 80% { -webkit-transform: scale3d(0.99, 0.99, 0.99); transform: scale3d(0.99, 0.99, 0.99); } to { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } }
テスト(デフォルト)
テスト(調整後)