
【GSAP】テキストアニメーションにイージング全種類で比較してみた!

はじめに
この記事の概要
こんにちは、株式会社TOKOSのスギタです!
今回はGreenSock社のGreenSock Animation Platform(GSAP)を使い、前回記事で作成したテキストアニメーションを元に各種イージングの比較をしていきたいと思います。
今回のベースとなるテキストアニメーションの実装方法を見たい方は下記を参照してください。
【GSAP】コピペでOK!!GSAPテキストアニメーションの実装
GSAPとSplitTypeを使って、一文字ずつ遅れて表示されるテキストアニメーションを実装する方法を解説します。コピペで使える実践的なサンプルコード付き。
対象読者
- Web制作でアニメーションの実装をしたい方
GSAPのイージングの概要
GSAPのイージングの指定はeaseプロパティを使用します。
// 本記事のベースとなるv2の記法
gsap.to("#text", { ease: Power1.easeOut })
// v3で推奨される文字列記法
gsap.to("#text", { ease: "power1.out" })イージングの種類も豊富に存在します。(15種類)
このうち14種類はv3では文字列で指定します。
括弧内がv3の文字列記法です。
Power0("none")Power1("power1")Power2("power2")Power3("power3")Power4("power4")Back("back")Elastic("elastic")Bounce("bounce")Rough("rough")SlowMo("slow"(0.7, 0.7, false))Stepped("steps(12)":分割数の指定が必須)Circ("circ")Expo("expo")Sine("sine")
残る1種類のCustomは自作イージングで、上の14種類とは扱いが異なります。
ease: "Custom"のような文字列指定はできず、CustomEaseプラグインでCustomEase.create("myEase", "M0,0 C0.2,0 0.3,1 1,1")のように名前を付けて登録し、その名前をeaseに渡して使います。
またv3では、この15種類とは別にExpoScaleEase("expoScale")という補助的なイージングも用意されています。
これはscaleの変化を見た目上一定の速度に見せるためのもので、ease: "expoScale(0.5, 7, power1)"のように開始・終了のスケール値を渡して使うため、他のイージングとは指定方法が異なります。
ExpoScaleEaseはRoughEase・SlowMoと同じくEasePackに含まれるプラグインなので、利用するにはEasePackの読み込みが必要です。詳しくは公式ドキュメントを参照してください。
ExpoScaleEase | GSAP | Docs & Learning
This ease is in the EasePack file. To learn how to include this in your project, see the Installation page.
gsap.com各イージングには加速・減速の方向を3種類指定できます。
v2ではPower1.easeOutのようにイージング名のプロパティとしてアクセスしますが、v3では"power1.out"のようにイージング名に.in/.out/.inOutをドットでつなげて指定します。(※指定できないイージングもあります。)
easeIn(v3:"power1.in"):最初が最低速で、加速するeaseOut(v3:"power1.out"):最初が最高速で、減速するeaseInOut(v3:"power1.inOut"):はじめはゆっくりで加速し、最後は減速する
v3では.outがデフォルトのため、上のイージング一覧のSineであれば"sine.out"を"sine"と省略して書くことも可能です。
またイージング名BackとElasticはイージングの強度も指定可能です。
()で囲み指定することが可能です。
// v3の記法
gsap.to("#text", { ease: "elastic.out(1, 0.3)" })
// v2の記法(v3でも動作します)
gsap.to("#text", { ease: Elastic.easeOut.config(1, 0.3) })イージングの選択は公式からすることが出来ます。
Easing | GSAP | Docs & Learning
Easing is the primary way to change the timing of your tweens. Simply changing the ease can adjust the entire feel and personality of your animation. There are infinite eases that you can use in GSAP so we created the visualizer below to help you choose exactly the type of easing that you need.
gsap.com下記画像の様に自分で選び選択することが出来ます。
テキストアニメーションイージング比較用のコードの紹介
今回使用するテキストアニメーションは前回記事で紹介したテキストアニメーションを使用します。
前回記事は下記になります。
【GSAP】コピペでOK!!GSAPテキストアニメーションの実装
GSAPとSplitTypeを使って、一文字ずつ遅れて表示されるテキストアニメーションを実装する方法を解説します。コピペで使える実践的なサンプルコード付き。
<header>
<div class="ease-name">
<span>easeIn</span>
<h1 id="ease-in">PLAY TO ENJOY</h1>
</div>
<div class="ease-name">
<span>easeInOut</span>
<h1 id="ease-in-out">PLAY TO ENJOY</h1>
</div>
<div class="ease-name">
<span>easeOut</span>
<h1 id="ease-out">PLAY TO ENJOY</h1>
</div>
</header>header {
/*下記はレイアウトを整えるものです*/
display: grid;
place-content: center;
height: 100vh;
background-color: #333;
}
h1 {
color: #fff; /*お好きなフォントカラーを選んでください*/
font-size: 20px; /*お好きなフォントサイズを選んでください*/
font-family: "Times New Roman", Times, serif; /*お好きなフォントを選んでください*/
clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
line-height: 1; /*line-heightなくしたほうがカッコ良くなります*/
}
.char {
transform: translateY(100px);
transition: transform 0.5s;
/* transform: translateY(-100px); テキストを上から出したい時*/
}
#ease-in,
#ease-in-out {
margin-bottom: 20px;
}
div span {
color: #fff;
font-size: 16px;
}加減速の三種類とイージングの種類で比較していこうと思っているので、比較用に3つ用意しました。
const easeIn = new SplitType("#ease-in") /*テキストの分割*/
const easeInChar = document.querySelectorAll("#ease-in .char") /*#ease-inの.charの取得*/
const easeInOut = new SplitType("#ease-in-out") /*テキストの分割*/
const easeInOutChar = document.querySelectorAll("#ease-in-out .char") /*#ease-in-outの.charの取得*/
const easeOut = new SplitType("#ease-out") /*テキストの分割*/
const easeOutChar = document.querySelectorAll("#ease-out .char") /*#ease-outの.charの取得*/
gsap.to(easeInChar, {
y: 0 /*テキストのY軸の操作*/,
stagger: 0.05 /*テキスト間の遅延時間*/,
delay: 0.2 /*アニメーションのスタートまでの遅延時間*/,
duration: 1 /*アニメーションの時間*/,
})
gsap.to(easeInOutChar, {
y: 0 /*テキストのY軸の操作*/,
stagger: 0.05 /*テキスト間の遅延時間*/,
delay: 0.2 /*アニメーションのスタートまでの遅延時間*/,
duration: 1 /*アニメーションの時間*/,
})
gsap.to(easeOutChar, {
y: 0 /*テキストのY軸の操作*/,
stagger: 0.05 /*テキスト間の遅延時間*/,
delay: 0.2 /*アニメーションのスタートまでの遅延時間*/,
duration: 1 /*アニメーションの時間*/,
})今回はSplitTypeを用いてテキストの分割を行っています。
分割した際に個別に別のプロパティを与えたいのでquerySelectorAllで個別に分割した際に生成されるclass="char"を取得しております。
下記の様に取得可能です。
const char = document.querySelectorAll("#hoge .char") /*#hogeの.charの取得*/またその親クラスのclass="word"も取得可能です。
const word = document.querySelectorAll("#hoge .word") /*#hogeの.wordの取得*/行いたいアニメーションによって使い分けましょう!
ここからeaseプロパティを追加して各種見ていきたいと思います。
GSAP各種イージング比較
ここから各種類比較していきたいと思います。
指定なし
何も指定していない状態です。
Power0
Power0は加減速の指定は出来ません。
Power1
Power2
Power3
Power4
Back
Elastic
Bounce
Rough
Roughは少し特殊でギザギザの効果を得ることが出来ます。
オプションが6種類あり選ぶことが出来ます。
詳しくは公式を参照してください。
RoughEase | GSAP | Docs & Learning
This ease is in the EasePack file. To learn how to include this in your project, see the Installation page.
gsap.comSlowMo
InとOutの移行をスムーズにしたものです。
第一引数に、変化の割合、第二引数にイージングの強さ、第三引数にyoyoの有無になります。
詳しくは公式を参照してください。
SlowMo | GSAP | Docs & Learning
This ease is in the EasePack file. To learn how to include this in your project, see the Installation page.
gsap.comStepped
通常は開始値と終了値の間で滑らかで段階的な移行を行いますが、SteppedEaseは、移行にステップ数を定義することが可能になります。
Circ
Expo
Sine
自作(Custom)
公式ドキュメントより自作することが可能です。
下記のようにグラフィカルに作成することが出来ます。
さいごに
今回は各種イージングを比較できるように全て試してみました。
初めて使うイージングもありこんな事もできるのかとためになりました。
種類が多くかなり表現の自由ができるなと感じました。
個人的にはPower1〜4が無難で使いやすいなと感じました。
皆さんも一度色々試して見てほしいです!
