JavaScriptで叶える、CSSアニメーションの自在な制御術
ウェブアニメーションの世界では、開発者は適切な技術――CSSかJavaScriptか――でアニメーションの要件を計測する必要があります。
ウェブデザイナーの中には、CSSでのアニメーションがJavaScriptより難しいと考える人がいます。CSSアニメーションにはいくつかの制限がありますが、多くの場合、私たちが思っている以上に能力があります!言うまでもなく、パフォーマンスも通常は優れています。
JavaScriptのタッチを加えることで、CSSアニメーションとトランジションは、ほとんどのJavaScriptライブラリよりも効率的にハードウェアアクセラレーションされたアニメーションとインタラクションを実現できます。 早速始めましょう!
早速始めましょう!
CSSトランジションを操る
コーディングフォーラムでは、要素のトランジションをトリガーしたり一時停止したりする方法に関する無数の質問があります。JavaScriptを使えば、その解決策は驚くほど簡単です。
要素のトランジションをトリガーするには、それをトリガーするクラス名をその要素にトグルします。
要素のトランジションを一時停止するには、一時停止したいトランジションの時点でgetComputedStyleとgetPropertyValueを使用します。次に、その要素のCSSプロパティを、取得した値と等しく設定します。
CSS「コールバック関数」の活用法
CSSトランジションやアニメーションを操作するための、最も有用でありながらあまり知られていないJavaScriptのトリックの1つは、それらが発火するDOMイベントです。例えば、アニメーションの場合はanimationend、animationstart、animationiteration、トランジションの場合はtransitionendなどです。これらのイベントが何をするかは、おそらく推測できるでしょう。これらのアニメーションイベントは、要素のアニメーションが終了、開始、または反復を完了したときにそれぞれ発火します。
現時点ではこれらのイベントにはベンダープレフィックスが必要なため、このデモでは、Craig Buckler氏が開発したPrefixedEvent関数を使用します。この関数は、element、type、callbackのパラメータを持ち、これらのイベントをクロスブラウザで動作させるのに役立ちます。CSSアニメーションをJavaScriptでキャプチャするための彼の有用な記事はこちらです。そして、イベントがどの(名前の)アニメーションを発火させているかを判断するもう一つの記事はこちらです。
CSSトランジションを操る
学んだように、要素を監視し、animationStart、animationIteration、animationEndといったアニメーション関連イベントに反応できます。しかし、アニメーション中にCSSアニメーションを変更したい場合はどうなるでしょうか?これには少しトリッキーな操作が必要です!
アニメーション再生状態プロパティ
CSSのanimation-play-stateプロパティは、アニメーションを一時停止し、後で再開したい場合に非常に役立ちます。JavaScriptから次のようにCSSを変更できます(プレフィックスに注意してください)。
要素.スタイル.最新のファッショントレンドをいち早くお届けします。 = 「一時停止」;
要素.スタイル.個々のスタイルを輝かせるプラットフォームです。 = 「実行中」;
現在のキーフレーム率を取得する
残念ながら、現時点ではCSSキーフレームアニメーションの正確な現在の「完了率」を取得する方法はありません。 最も正確に近似する最良の方法は、setInterval関数を使用することです。 アニメーション中に100回繰り返されるもので、本質的にはアニメーションの持続時間(ミリ秒)/ 100です。たとえば、アニメーションが4秒間続く場合、setIntervalは40ミリ秒ごと(4000/100)に実行する必要があります。
var showPercent = ウィンドウ.setInterval(関数() {
もし (currentPercent < 100) {
currentPercent += 1;
} そうでなければ {
currentPercent = 0;
}
// Updates a div that displays the current percent
結果.innerHTML = currentPercent;
}, 40);
確かな知識で差をつける
コーディングを始める前に、トランジションやアニメーションの実行方法を考え、計画することが、問題点を最小限に抑え、望む効果を得るための最善の方法です。後で解決策をGoogle検索するよりもずっと良いです!この記事で概説されたテクニックやトリックは、プロジェクトに必要なアニメーションを作成するための最善の方法ではない場合があります。
ここでは、HTMLとCSSだけで巧妙に問題を解決できる、JavaScriptに頼ろうと思ったかもしれない場面の簡単な例を紹介します。
結論:未来を彩るスタイル
- 開発者はかつて、CSSとJavaScriptのどちらかを選択する必要がありました。
- JavaScriptでは、CSSトランジションは一般的にCSSアニメーションよりも扱いやすいです。
- CSS行列は、特に初心者にとって、一般的に扱いにくいものです。
- 何をすべきかを考え、どのように実行するかを計画すること。