Amazonで商品を見る セール会場へ

SWELL│トップページでローディング画面を表示する方法│ロゴアニメーション│スプラッシュ画面

トップページにアクセスした時に簡単なロゴアニメーションを表示(スプラッシュ画面)させてみました。

SWELL以外のテーマでも同じ考え方で応用できますが、ブログパーツとwp_body_openへの対応はテーマに合わせて確認が必要です。

※SWELL以外のテーマでは、ブログパーツの代わりに再利用ブロック(同期パターン)等を使ってください。

トップページにアクセスした際に表示される簡単なロゴアニメーションの動作例。
※GIFアニメーションは倍速になってしまってます
目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

SWELLでトップページでロゴアニメーションするローディング画面を作成する方法

ブログパーツ、CSS、PHPで作成できます。

STEP
ロゴ画像をブログパーツに配置する

ブログパーツを新規作成し、背景用にフルワイドブロックを配置します。

その中にロゴ画像を入れます。

ローディング画面は装飾として扱うため、画像のリンク先は「なし」にし、ボタンや入力欄は配置しません。

フルワイドブロックの追加CSSクラスにはloader-overlayと記述しておきます。

作成したブログパーツのID(ショートコード内の数字)はメモしておきましょう。

追加CSSクラスの設定や背景色の調整を行うブログパーツの編集画面。

画像では境目がわかりやすいようにフルワイドの背景色をグレーにしていますが、実際のサイトでは黒にしています。

CSSではなくブログパーツで要素の見た目を整えるようにしています。

STEP
CSSの挿入

外観 → カスタマイズ → 追加CSS、または子テーマのstyle.cssのどちらか一方に以下のCSSを挿入してください。

今回はロゴ部分はスケールとフェードのアニメーション、フルワイドの部分にフェードのアニメーションを入れております。

この部分は好きなように変更してみてください。

/* ローディング画面表示 */
.loader-overlay {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  width: 100vw;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none; /* オーバーレイの下にある要素へのクリックを妨げない */
  animation: overlayFadeOut 2.5s 2s forwards;
}

.loader-overlay img {
  width: 360px; /* PCのロゴ画像のサイズ */
  opacity: 0;
  transform: scale(0.9); /* 初期状態は少し小さく */
  animation: logoFadeZoom 1.5s ease-out forwards, logoFadeOut 1.5s 1.5s ease-out forwards; /* ロゴのフェードインとフェードアウトアニメーション */
}

@media screen and (max-width: 959px) {
  .loader-overlay img {
    width: 180px; /* スマホのロゴ画像のサイズ */
  }
}

/* ローディング画面全体のフェードアウトアニメーション */
@keyframes overlayFadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    visibility: hidden;
  }
}

/* ロゴのズームインとフェードインのアニメーション */
@keyframes logoFadeZoom {
  0% {
    opacity: 0;
    transform: scale(0.9); /* 少し小さい状態から始める */
  }
  100% {
    opacity: 1;
    transform: scale(1); /* 徐々にフェードインしながら元のサイズに */
  }
}

/* ロゴがフェードアウトのアニメーション */
@keyframes logoFadeOut {
  0% {
    opacity: 1;
    transform: scale(1); /* フェードアウト前の状態を維持 */
  }
  100% {
    opacity: 0;
    transform: scale(1); /* サイズは維持したままフェードアウト */
  }
}
@media (prefers-reduced-motion: reduce) {
  .loader-overlay { display: none; animation: none; }
  .loader-overlay img { animation: none; }
}
STEP
functions.phpにコードを挿入

子テーマのfunctions.php、またはCode Snippetsプラグインのどちらか一方に以下のコードを追加します。

親テーマ(SWELL本体)のfunctions.phpはテーマ更新で上書きされるため、直接編集しないでください。

掲載PHPは無名関数を登録するため、両方に追加すると処理が二重に登録されます。

登録先はどちらか一方にしてください。

作業前に、編集するファイルやスニペットの現在の内容をバックアップしておきましょう。

コード内の「270」は、最初の手順でメモしたブログパーツのIDに変更してください。

add_action('wp_body_open', function () {
    if ( ! is_front_page() ) { return; }
    echo '<div aria-hidden="true" inert>' . do_shortcode('[blog_parts id="270"]') . '</div>';
});

この例はCSSだけで時間経過後に非表示にし、既存のwindow.onloadやヘッダーの表示設定を変更しません。

ラッパーのinert属性でローディング画面内を操作対象から外します。

aria-hiddenだけではリンクのキーボードフォーカスは除外できません。

inertの動作はMDNの説明を参照してください。

STEP
確認

トップページを更新し、アニメーションが始まってから約4.5秒後に画面全体が消えることを確認します。

これは読み込み完了を待つ処理ではなく、ページを開いてからの時間で終了する演出です。

トップページを更新して動作を確認する際のアニメーション表示例。
※GIFアニメーションは倍速になってしまってます

Tabキーでローディング画面内のロゴへ移動せず、本文のリンクやボタンを操作できることを確認します。

PCとスマホで、終了後に透明な画面が残らないこと、トップページ以外には表示されないことも確認してください。

OSで動きを減らす設定を有効にした場合は、演出を表示しないCSSを用意しています。

元に戻す場合は、追加したPHPとCSSを削除してください。

サイト型トップページの作り方は、こちらにまとめています。

ブログパーツの実行と動作確認

PHP内のdo_shortcodeには角かっこ1組の実行用ショートコードを渡します。

二重の角かっこでは文字として出力され、ブログパーツのロゴが表示されません。

実ブログパーツを用意したトップページで、表示後にロゴと背景が消えること、投稿ページには出ないこと、リンク付き画像を置いた検証でもTabの移動先から外れることを確認しました。

動きを減らすOS設定とWP Rocketの遅延・キャッシュ併用は、今回の実操作には含めていません。

トップページで表示中の装飾ロゴ
表示中の装飾ロゴ(2026年10月2日撮影、WordPress 7.1.2 / SWELL 2.19.0の隔離環境)。

トップへの入り方でスプラッシュの動作を確認する

操作確認する結果
URLを直接開くトップのページ生成時にローダーを出す
Pjaxで対象外からトップへ移動wp_body_openの領域は追加されないため、このPHPでは再表示しない
通常読込でトップから対象外へ移動ローダーとinertの領域が移動先に残らない

このスプラッシュはトップを通常読み込みしたときの演出として使います。

サイト内の移動ごとに演出を再実行したい場合は、掲載PHPの対象範囲を広げるだけでは対応できません。

SWELLで通常読込へ戻すときは、変更前の高速化設定を記録し、Pjaxによるページ遷移を無効にしてから対象外とトップを往復します。

確認後に以前のPjax設定を復元した場合は、直接開いた場合とリンクで移動した場合を再度分けて確認します。

2026年10月3日のWordPress 7.1.2 / SWELL 2.19.0では、実Pjaxで対象外からトップに入るとローダーが追加されず、通常読込でトップから離れるとローダーとinertの要素が残らないことを確認しました。

通常読込でトップから離れた対象外ページ
通常読込でトップから離れた画面で、ローダーとinertの要素が残らないことを確認。2026年10月3日、隔離したWordPress 7.1.2 / SWELL 2.19.0で撮影。

まとめ

個人的には、サイトのローディングアニメーション表示を好みません。

演出が必要な場合に限って使用してください。

もっと凝ったものを作りたい場合はプラグイン等を使うことをおすすめします。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/WAZA-codeにもまとめています。

これは読み込み完了を検知する処理ではなく、一定時間だけ表示する装飾です。

OSで動きを減らす設定を有効にしている場合は表示せず、背景のリンクや操作もブロックしません。

同じローディング画面を表示する処理がすでにある場合は、掲載コードを重ねて登録しないでください。

  • URLをコピーしました!

実装を任せたい方へ

SWELLのカスタマイズ代行

記事のコードをそのまま使うのが不安な場合や、サイトに合わせた調整が必要な場合は当社が実装します。1時間 ¥8,000〜(税込)。テーマ更新に強い書き方で納品します。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次