はじめに
この記事の概要
こんにちは、株式会社TOKOSエンジニアのスギタです!
今回は、GreenSock社が開発したGreenSock Animation Platform(GSAP)を使いテキストアニメーションを行ってみようと思います。
アニメーションはハードル高いなーと感じていた自分ですが、公式HPに「コードを使用したアニメーションは、最初は威圧的に見えるかもしれませんが、心配しないでください。私たちのプラットフォームは、シンプルで直感的になるように設計されています。(和訳)」とあるように手軽に実装できたので、
紹介したいと思います🥺
対象読者
- CSS/HTML等にアニメーション実装させたい方
GSAPの使用方法
使用方法
GSAPを利用するには、オフィシャルサイトからダウンロードするか、CDNサイトでも提供されているので、そのURLを読み込みます。
今回はCDNを利用していきたいと思います。
オフィシャルサイト
参考
GreenSockTOP
CDNを利用する場合は下記のようになります。
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js"></script>
GreenSock社は独自のライセンスを採用しているためご使用の際は公式ページに載っているライセンス規約を守り、ご使用してください🙇♂️
実装GSAPの実装
完成アニメーション
今回のアニメーションとしては、まず初めに白色の背景から黒色の背景になり「CREATE PLAY ENJOY」と「作って、遊んで、楽しむ」が下方向からフワッと浮き出てき、
下方向に消え、消えてから「TOKOS inc.」が左方向から徐々に出てくるというものです。
今回の完成アニメーションは下記になります。
HTML/CSS
まずはHTML/CSSの紹介です。
HTML
<div class="background-color">
<div class="text-area">
<h1 class="text">CREATE PLAY ENJOY</h1>
<p class="text">作って、遊んで、楽しむ</p>
<h1 class="title">
<span>T</span>
<span>O</span>
<span>K</span>
<span>O</span>
<span>S</span>
<span> </span>
<span>i</span>
<span>n</span>
<span>c</span>
<span>.</span>
</h1>
</div>
</div>
CSS
html,
body {
margin: 0;
padding: 0;
background-color: #ffffff;
}
.text-area {
width: 100%;
height: 100vh;
align-items: center;
justify-content: center;
display: flex;
flex-direction: column;
}
h1 {
font-size: 50px;
margin: 0;
text-align: center;
letter-spacing: 1px;
}
p {
font-size: 16px;
margin: 0;
text-align: center;
}
.background-color {
width: 100%;
height: 100vh;
background-color: black;
opacity: 0;
position: relative;
}
.text {
opacity: 0;
transform: translateY(20px);
color: #ffffff;
}
.title {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.title span {
opacity: 0;
color: #ffffff;
}
画面で表示させると、何も写りません。というのも今回GSAPのTweenメソッドでも、gsap.to()というTweenメソッドを使っていくからです。
GSAPの実装
上記で少し触れたGSAPのTweenメソッドですが、全部で4種類あります。
軽くですが紹介したいと思います。
・gsap.to()・・・ゴールの状態を指定します(現在の状態からのアニメーション)
・gsap.from()・・・スタートの状態を指定します(現在の状態に戻るアニメーション)
・gsap.fromto()・・・fromとtoをあわせた指定方法(初期状態から完成状態へのアニメーション)
・gsap.set()・・・状態指定(cssを使わずgsap内で指定する)
今回使用するのはメソッドはgsap.toですので、上記で映らなかった初期状態からgsapを使い完了状態へアニメーションをさせるという事になります。
ではGSAPの紹介に入ります。
//1.5秒かけ黒色背景を表示
gsap.to(".background-color", {
duration: 1, //アニメーションの時間の設定
opacity: 1, //表示状態の指定
});
//.textを1.5秒かけ出現させ1.5秒かけ逆再生させ初期状態に戻す
gsap.to(".text", {
delay: 1, //アニメーションの初期遅延(アニメーションが開始されるまでの指定)
duration: 1, //アニメーションの時間の設定
opacity: 1, //表示状態の指定
y: "0px", //cssでY軸-20pxから完了時0pxへの指定
yoyo: true, //trueにすることで上記で指定したY軸の動きの逆再生
repeat: 1, //yoyoのリピート回数
//同じclass名のバリデーションの設定
stagger: {
each: 0.5, //ディレイ時間
},
});
//初期遅延3.5秒かけてから.titleを表示
gsap.to(".title span", {
delay: 3.5, //アニメーションの初期遅延(アニメーションが開始されるまでの指定)
duration: 1.5, //アニメーションの時間の設定
opacity: 1, //表示状態の指定
//同じclass名のバリデーションの設定
stagger: {
each: 0.2, //ディレイ時間
from: "start", //出現方法の指定
},
});
上記でもわかる通りすべて完了状態への指定の仕方になります。
これでアニメーション実装完了です!!
Tweenのオプション等はわかりやすく説明されているので、下記を参照してください!!
終わりに
今回は簡単ではありますが、GSAPを使いテキストアニメーションを実装してみました。
でも一つ疑問が、もし背景の出現指定のdurationの時間が10秒になった場合、.titleのdelayが3.5秒なのでアニメーションが崩れてしまうような、、、
次回「GSAP Timelineを使ってみた!!!」
次回の記事
参考
GSAP Timelineを使ってみたISSEN