【JS&CSS】ページ読み込み完了までローディングアイコンを表示する

本記事では、以下のようなローディングアイコンを作る方法(CSS)と、ページの読み込みが完了するまでローディングアイコンを表示する方法(JavaScript)を紹介します。

回転する円

複数のドットがリズム良く拡大縮小

不定形プログレスバー

目次

ローディングアイコンの実装コード(HTML / CSS)

CSSのアニメーション(@keyframes)を使うことで、動きのあるローディングアイコンを実装できます。

1. 回転する円

borderを使って円の一部分だけを濃い色にし、その部分を回転させることでローディングアイコンに見せることができます。

<div class="container">
  <div class="spinner"></div>
</div>

2. 複数のドットがリズム良く拡大縮小

@keyframesで指定したアニメーションを、異なるタイミングで各ドットに適用することで、連動した動きに見せています。

<div class="container">
    <div class="spinner-2">
        <div class="dot"></div>
        <div class="dot"></div>
        <div class="dot"></div>
    </div>
</div>

3. 不定形プログレスバー

@keyframesで指定したアニメーション(プログレスバーが左側から中央に移動し、右側へ流れる)を繰り返します。バーの位置はpositionプロパティで外枠内に収まるようにし、外枠からはみ出た部分はoverflow: hidden;で見えないようにします。

<div class="indeterminate-bar-container">
  <div class="indeterminate-bar"></div>
</div>

ページの読み込みが完了するまでローディングアイコンを表示する

そもそもローディングアイコンは、ページがロード中である(フリーズなどしていない)ことをユーザーに知らせる役割があります。特に、たくさんの画像や動画をを読み込む必要があったり、フォーム送信後の処理が必要であったりする場合は、ユーザー体験(UX)の向上に大きく寄与します。

このような「重いページ」を読み込む際にのみローディングアイコンを表示するには、JavaScriptを使って「ページのコンテンツがすべて読み込まれる前にローディングアイコンを表示し、読み込み完了後に非表示にする処理」を追加します。

/* ページが完全に読み込まれた後はローディングアイコンを非表示に */
body.loaded .container {
    display: none;
}
// ページ全体が読み込まれたらローディングアイコンを消す
window.addEventListener('load', function() {
    document.body.classList.add('loaded');
});

ページが読み込まれたらbody要素にloadedクラスが付与され、ローディングアイコンのコンテナ要素にdisplay: none;が適用されることでアイコンが非表示になります。


当サイトで公開しているWebデザインやUIの実装例は、一覧として以下記事に纏めています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次