ローディングアニメーションとは、ページやデータの読み込み中に一時的に表示されるアニメーションのことです。「処理が止まっていない」ことを視覚的に伝えられるため、待ち時間のストレスを軽減し、離脱を防ぐ効果があります。実装は「①ローディング画面を全面に重ねる → ②CSSでアニメーションさせる → ③JavaScriptで読み込み完了時に消す」の3ステップで完成します。本記事では、コピーして使えるコード例から、種類の選び方、UXを損なわないための注意点までを解説します。
ローディングアニメーションとは?導入する3つのメリット

ローディングアニメーションの役割は、待ち時間を「不安な時間」から「進行中だと分かる時間」に変えることです。主なメリットは次の3点です。
- 読み込み状況の可視化:ページが固まったわけではないとユーザーに伝わり、離脱を防げる
- 待ち時間のストレス軽減:動きがあることで体感的な待ち時間が短くなる
- 遅延の自然な隠蔽:画像やデータ取得の遅れを、演出としてカバーできる
特にファーストビューに大きな画像や動画を使うサイトでは、読み込み途中のガタついた表示を見せずに済むため、ブランドイメージを守るうえでも効果的です。
ローディングアニメーションの主な種類
まずはサイトの雰囲気に合う型を選びます。代表的なパターンは次のとおりです。
- スピナー(回転タイプ):円がくるくる回る定番。どんなサイトにも馴染む
- プログレスバー:進捗が数値や長さで分かるため、待ち時間が長い処理に向く
- カウントアップ(数字表示):0→100%と進む演出。ブランドサイトで人気
- ドット・パルス:点が波打つように動く軽量なタイプ
- スケルトンローダー:コンテンツの枠だけ先に表示する方式。近年のWebアプリで主流
- SVG・ロゴアニメーション:ロゴを動かす演出でブランド訴求と両立できる
実装手順3ステップとコード例

基本の考え方は「読み込み中はローディング画面を全画面に重ねておき、読み込みが終わったらJavaScriptでクラスを付けて消す」です。順に見ていきましょう。
STEP1:HTMLでローディング画面を用意する
<div id="loading"><div class="spinner"></div></div><div class="contents"><!-- ページ本体 --></div>STEP2:CSSで全面に重ねてアニメーションさせる
ポイントはposition: fixedで画面全体を覆うことと、@keyframesで動きを定義することです。
#loading { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; background: #fff; transition: all 1s;}.spinner { width: 50px; height: 50px; border: 5px solid #eee; border-top-color: #333; border-radius: 50%; animation: spin 1s linear infinite;}@keyframes spin { to { transform: rotate(360deg); }}#loading.loaded { opacity: 0; visibility: hidden;}STEP3:JavaScriptで読み込み完了時に非表示にする
アニメーション自体はCSSだけで作れますが、「読み込みが終わった」ことを検知するには、次のような短いJavaScriptが必要です。
window.addEventListener("load", function () { document.getElementById("loading").classList.add("loaded");});window.onloadは画像を含むすべての読み込み完了後に発火します。CSS側でtransitionを指定してあるため、ローディング画面はふわりとフェードアウトします。
ゼロから作らずライブラリ・ジェネレーターを使う手も
デザインにこだわらない場合は、既製のCSSスピナーを使うほうが早く確実です。よく使われるものに、Single Element CSS Spinners、SpinKit、Epic Spinners、進捗バーを自動表示するPACEなどがあります。また、スピナーやドット、波形などのCSSコードを、色・サイズ・速度を調整しながら生成できるジェネレーターも公開されており、出力されたHTMLとCSSを貼り付けるだけで導入できます。
UXを損なわないための注意点
もっとも大切なのは「そもそも読み込みが速いサイトを作ること」です。ローディングアニメーションは遅さを隠す演出であり、遅さの解決策ではありません。次の点に注意しましょう。
- 凝りすぎない:複雑なアニメーションや大きなファイルは、かえって表示速度を下げてUXを悪化させる
- 長く見せない:演出のためだけに表示時間を引き延ばすと、ストレスの原因になる
- モバイルを確認する:スマホは回線・端末性能の影響を受けやすいため実機でチェックする
- 失敗時に備える:エラーで読み込みが終わらないと、ローディング画面が消えず操作不能になる
- アクセシビリティ:動きの激しい演出は、必要に応じて
prefers-reduced-motionで抑制する
よくある質問(FAQ)
Q. CSSだけでローディングアニメーションは作れますか?
A. アニメーションの動き自体はCSSだけで作れます。ただし「読み込みが完了したかどうか」を判定して非表示にする部分には、数行のJavaScriptが必要です。
Q. ローディング画面が消えないのはなぜですか?
A. JavaScriptがエラーで止まっているか、クラス名やIDがCSSと一致していない可能性が高いです。ブラウザの開発者ツールでエラーを確認してください。
Q. 表示時間はどのくらいが適切ですか?
A. 読み込みが終わり次第すぐ消すのが基本です。演出として最低表示時間を設ける場合でも、1〜2秒程度に抑えるとストレスになりにくくなります。
Q. どんなサイトに導入すべきですか?
A. 大きな画像や動画を使うブランドサイト、データ取得に時間がかかるWebアプリなど、待ち時間が発生しやすいサイトに向いています。軽量なページでは、無理に導入しないほうがよい場合もあります。

