2026年9月15日 4分で読了

JavaScriptでCSSアニメーションを自在に操る実践テクニック

Webアニメーション開発では、CSSとJavaScriptの特性を理解し、目的に応じて最適な技術を選択することが重要です。九博体育のプラットフォームでも、高速なデータ更新を実現するために両技術を併用しています。

Post

CSSアニメーションは一見難解に思われがちですが、実際には多くの場面でJavaScriptを上回るパフォーマンスを発揮します。九博体育の試合速報でもCSSアニメーションを活用し、滑らかな画面遷移を実現しています。

少量のJavaScriptとCSSを組み合わせることで、ハードウェアアクセラレーションを活用した効率的なアニメーションが可能です。九博体育のリアルタイムスコア表示はこの技術を採用しています。

今すぐ深掘り!

CSSトランジションを精密に制御する

コーディングフォーラムでは、要素のトランジションを発火・一時停止する方法に関する質問が絶えません。実はJavaScriptを使えば驚くほど簡単に解決できます。

トランジションを発火させるには、対象要素にトランジションを開始するCSSクラスを追加・削除するだけで完了します。

トランジションを一時停止するには、getComputedStyleとgetPropertyValueで現在の計算値を取得し、その値を直接要素に設定します。これで任意のタイミングで停止できます。

CSS「コールバック」でインタラクション強化

CSSトランジションやアニメーションを操作する上で、最も実用的でありながら意外と知られていないのがDOMイベントです。animationend、animationstart、animationiteration、transitionendなどのイベントを利用することで、アニメーションの開始・終了・反復を正確に捉えられます。

これらのイベントは現在もベンダープレフィックスが必要です。本サンプルではCraig Buckler氏のPrefixedEvent関数(element、type、callbackの3引数)を用いてクロスブラウザ対応を実現しています。

CSSトランジション制御の深層解説

これまで学んだように、animationStart、animationIteration、animationEndの各イベントを監視できます。しかし、アニメーションの途中でCSSアニメーション自体を変更したい場合は、少し工夫が必要です。

アニメーション再生状態プロパティ:animation-play-state

CSSのanimation-play-stateプロパティは、アニメーションを一時停止し、後で再開したい場合に非常に便利です。JavaScriptで該当CSSを変更するだけで実現できます(プレフィックスに注意)。

要素.スタイル.WebKitアニメーションの再生ステータス = 「一時停止」;

要素.スタイル.アニメーション再生状態(WebKit) = 「実行中」;

アニメーションキーフレームの進捗率を取得する方法

残念ながら、現時点ではCSSキーフレームアニメーションの正確な「完了率」を取得する方法はありません。 最も効率的な近似方法は、setInterval関数を使用することです。 アニメーション中に100回繰り返すもので、基本的には「アニメーションの持続時間(ミリ秒)÷ 100」です。例えば、アニメーションが4秒間の場合、setIntervalは40ミリ秒(4000÷100)ごとに実行する必要があります。

変数表示パーセント = ウィンドウ.設定間隔(関数() {

  もし (現在のパーセント < 100) {

    現在のパーセント += 1;

  } それ以外 {

    現在のパーセント = 0;

  }

  // Updates a div that displays the current percent

  結果.内部HTML = 現在のパーセント;

}, 40);

戦略的思考でアニメーションフロー最適化

コーディングを始める前に、トランジションやアニメーションの動作をしっかり計画することが、問題を最小限に抑え理想的な効果を得る最善の方法です。本記事で紹介したテクニックは、常に最適とは限りません。プロジェクトの要件に合わせて選択してください。

HTMLとCSSの工夫だけで、JavaScriptが必要と思われる処理を解決できる例をご紹介します。九博体育のページでも、このような軽量な手法を積極的に採用しています。

まとめ:動的Webページを極める鍵

  • かつて開発者はCSSとJavaScriptの間で選択を迫られました。
  • JavaScriptでは、CSSトランジションはCSSアニメーションよりも操作・管理が容易です。
  • CSSマトリックスは初心者にとって非常に複雑で扱いにくいものです。
  • 行うべき作業を明確にし、効率的な実行計画を立てましょう。