Web活のロゴ

Web制作Output&初心者のための徹底ガイド

Gsapでローディングアニメーションを実装 #1/2

2023.07.13ローディングアニメーションの実装について
はじめに
概要

今回は、当サイトで実装している軽微なローディングアニメーションをGsapを使って実装する方法についてご紹介します。ローディングアニメーションは、サイトに初めて訪れる人に強い印象を与えることができます。ぜひ、この技術をマスターしましょう。なお、Gsapの使い方についてはこちらを参照してください。

スポンサーリンク
※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。

アニメーションの流れ

bodyタグの中には、以下のようにもう一つの親コンテンツ(ここではid=global-containerとしています)を作成します。loadingアニメーションが終了するまでは、このコンテンツをdisplay:noneで非表示にしておきます。そして、loadingアニメーションが終了した後に、display:blockを使って要素を表示させる流れになります。サンプルコードはこちらです。

スポンサーリンク

ローディングアニメーションの実装

HTMLコード

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/destyle.css@1.0.15/destyle.css" />
  <link rel="stylesheet" href="/src/scss/style.scss">
  <script type="module" src="/src/js/gsap.js"></script>
</head>

<body>
  <div id="global-container">
    <div class="loading js-loading-2">
      <h1 class="js-loading-1">ローディング<br />アニメーション</h1>
    </div>
    <!-- /.loading -->
    <div id="container" class="js-loading-3">
      <header>ヘッダー</header>
      <main>
        <div id="main-container">メインコンテンス</div>
        <!-- /#main-container -->
      </main>
      <footer>フッター</footer>
    </div>
    <!-- /#container -->
  </div>
  <!-- /#global-container -->

</body>

</html>

bodyタグの直下にloadingアニメーションをセットします。アニメーション専用のクラス(js_1,js_2名前は何でもよい)をつけておきます。

CSSコード

body {
  color: #fff;
  font-size: 3rem;
  letter-spacing: 0.02em;
}

.loading {
  width: 100%;
  color: Black;
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  opacity: 0;
}

header {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 150px;
  background-color: Blue;
}

main {
  height: 500px;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: Gray;
}

footer {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 150px;
  background-color: Black;
}

loadingアニメーションが終了するまで、#global-containerは非表示にしておきます。

Gsapコード

import gsap from "gsap";

export class GsapAnimation {
  constructor() {
    this.initLoading();
  }
  initLoading() {
    gsap.set(".js-loading-2", {
      opacity: 1,
    });
    const loading = gsap.timeline();
    loading
      .from(".js-loading-1", {
        opacity: 0,
        delay: 2,
        y: 10,
      })
      .to(".js-loading-1", {
        opacity: 0,
        y: 10,
        delay: 1,
      })
      .to(".js-loading-2", {
        display: "none",
      })
      .from(".js-loading-3", {
        opacity: 0,
      });
  }
}
new GsapAnimation();

gsapのtimelineを使用します。こちらを使用することで、アニメーションを順番に表示することができ、コントロールすることができます。timelineについてはこちらを参照ください。

応用編
ブラウザのキャッシュを活用し、ローディングアニメーションを1回のみ表示させることも可能です。こちらについては別の記事で説明しておりますので参照ください。

スポンサーリンク
まとめ
  • Gsapを使用することにより、ローディングアニメーションも簡単に実装ができる
  • Gsapのtimelineを活用する
  • アニメーションの流れを理解する
  • ブラウザのキャッシュを活用し、アニメーションを1回のみ表示することも可能である

関連記事