GSAPを使って、スクロールしたら要素がふわっと浮き出てくる実装をしてみます。
デモページは以下のとおりです。
スクロールしていくと、スクロール量に合わせて要素が次々と浮き出てくるあれです。
GSAPのscrollTriggerを使うと簡単に実装できたので、個人的に気に入りました。
ぜひ参考にしてみてください。
参考URL:https://8oo.jp/blog/39/
はじめに:GSAPとは
はじめに、GSAPとは、高機能なアニメーションを実装できるJavaScriptライブラリです。
JavaScriptのライブラリなんだな〜と覚えておくことにします。
GSAP&ScrollTriggerをページ内で使えるようにしよう
GSAPをページ内で使えるようにするには、jQueryなどと同様にscriptタグでCDNを読み込む必要があります。
今回は、GSAPの本体とあわせて「ScrollTrigger」の拡張プラグインも必要です。
ですので、まずは下記のGSAPインストールページに行きます。
https://greensock.com/docs/v3/Installation
ページをスクロールして出てくる「GSAP 3 Install Helper」の「CDN」タブにて、「ScrollTrigger」にチェックを入れます。
そうすると、Browser code内にコードが表示されますので、コードをコピーして、htmlファイルの</body>の直前に貼り付けます。
ここまでできたらGSAPとScrollTriggerの準備は完了です!
実際にスクロールで複数要素がふわっと浮き出てくるデモを作る
準備ができたら、実際にデモを作っていきましょう!
土台となるHTML/CSS
さて、サクッと土台を作りました。
任意のjsファイルを作成し、上記でhtmlに貼り付けたGSAP scriptタグの直下で読み込みを行ってください。
私は、assets/jsフォルダ内にmain.jsを作成し、scriptタグで読み込んでいます。
See the Pen
Untitled by tom k (@tom-k-the-encoder)
on CodePen.
同じ構成の要素が並んでいるページで、これの1つ1つの要素をスクロールするごとにふわっと出現させたいです。
現状、べたーっとすべて出現したままになっています。
JavaScript
追加するJavaScriptは、以下の通りです!解説を部分的にしていきます。
gsap.utils.toArray(".content").forEach(target => {
gsap.from(target, {
scrollTrigger: {
trigger: target,
start: 'top 75%',
toggleActions: 'play none none reverse',
},
opacity: 0,
yPercent: 50,
});
});
gsap.utils.toArray(“.content”).forEach(target => {
「.content」部分は、ふわっと浮き上がらせたい部分のクラス名を入れます。
「target」は、どんな名前でもOKですが、わかりやすいものがいいでしょう。
trigger: target,
ここの「target」部分は、上部でつけた名前と同じものを入れます。
start: ‘top 75%’
画面のどの位置に要素が差し掛かったらアニメーションを始めるかを記述します。
この設定では、画面の上から75%の部分に要素が差し掛かったらアニメーションを開始します。
toggleActions: ‘play none none reverse’,
左から順番に、以下のようになります。
- onEnter…スクロール位置がstart位置を超えて下に移動したときの動作
- onLeave…スクロール位置が終了位置を超えて下に移動したときの動作
- onEnterBack…スクロール位置が終了位置を超えて上に移動したときの動作
- onLeaveBack…スクロール位置がstart位置を超えて上に移動したときの動作
また、指定できるものは以下の通りです。
play | アニメーションスタート |
---|---|
pause | 一時停止 |
resume | アニメーション再開 |
reset | アニメーション開始直前の状態に戻す |
restart | はじめに戻ってアニメーションスタート |
complete | アニメーションスタート直後の状態にする |
reverse | アニメーションを逆再生する |
none | 指定しない |
今回の「スクロールしたら要素がふわっと浮き出てくるアニメーション」については終了位置は設定していません。
onEnterを「アニメーション開始」のplayに設定。
onLeaveBack、つまり、スクロールを戻したら、reverse「アニメーションを逆再生する」に設定しています。
なので、top: 75%の位置に要素が差し掛かると、ふわっと浮き出るアニメーションが開始され、スクロールを逆に動かす(戻す)とアニメーションが逆再生されます。
yPercent: 50,
要素がtop: 75%の位置に差し掛かったら、y軸方向に要素の高さの50%分移動します。
ピクセルで指定することもできて、その場合、例えばy軸方向に200px動かしたいときには以下のように指定します。
y: 200,
完成したデモ
HTML/CSS、GSAPを用いて作ったデモは以下の通りです。
See the Pen
gsap_20230910002 by tom k (@tom-k-the-encoder)
on CodePen.
要素がスクロールされるごとにふわっと浮き出てきて、スクロールを戻すとフッと消えていくかと思います。
jQueryよりも簡単に実装ができ、扱いやすかったです!
GSAPのライセンス
GSAPには無料の「Standard License」、有料の「Business License」の2種類のライセンスがあり、基本的には無料で使えます。
ただし、複数のエンドユーザーに販売するプロジェクトについては有料ライセンスが必要です。
詳しくはGSAP公式サイトのライセンスページをご覧ください。
まとめ
GSAPでスクロールするとふわっと要素が浮き出てくるアレを実装してみました。
jQueryよりも簡単だったので、今後も実務に使っていきたいと思いましたし、ほかの拡張プラグインも試してみたいと思えました!
今後も勉強を続けて、アニメーション効果の高いWebサイトを作れるようにしたいです。
それでは!