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

はじめに
概要
今回は、当サイトで実装している軽微なローディングアニメーションを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>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.2/dist/gsap.min.js"></script>
</head>
<body>
<div class="loading js_2">
<div class="loading__inner">
<h1 class="js_1">ローディング<br />アニメーション</h1>
</div>
<!-- /.loading__inner -->
</div>
<!-- /.loading -->
<div id="global-container" class="js_3">
<div id="container">
<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: #ffffff;
font-size: 3rem;
letter-spacing: 0.02em;
}
.loading h1 {
color: Black;
}
.loading__inner {
text-align: center;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
#global-container {
display: none;
opacity: 0;
visibility: hidden;
}
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コード
<script>
const loading = gsap.timeline();
loading
.from(
".js_1",
1,
{
opacity: 0,
y: 50,
},
2
)
.to(".js_1", 1, {
delay: 0.5,
opacity: 0,
y: 50,
})
.to(".js_2", 1, {
display: "none",
})
.to(".js_3", 1, {
display: "block",
opacity: 1,
visibility: "visible",
y: -10,
delay: 1,
});
</script>gsapのtimelineを使用します。こちらを使用することで、アニメーションを順番に表示することができ、コントロールすることができます。timelineについてはこちらを参照ください。
実装動画
応用編
ブラウザのキャッシュを活用し、ローディングアニメーションを1回のみ表示させることも可能です。こちらについては別の記事で説明しておりますので参照ください。
まとめ
- Gsapを使用することにより、ローディングアニメーションも簡単に実装ができる
- Gsapのtimelineを活用する
- アニメーションの流れを理解する
- ブラウザのキャッシュを活用し、アニメーションを1回のみ表示することも可能である




