はじめに
今回は、GSAP・ScrollTriggerを使ってスクロールに応じてフェードイン表示させる方法を解説します。
Class構文とJavaScriptのdata属性を使っているので汎用的に使えるかと思います。
今回のフェードインの種類としては、最初はopacity: 0
で非表示にさせ上下左右から表示されるようなものを作ります。
👇は完成形のCodePenデモです!
HTMLとCSS
HTMLとCSSは下記になります。
HTML
ここでフェードインさせる方向を決めるために、data属性(data-inview
)で決めます!
こちらは後ほどCSSとJavaScriptで使います!
CSS
CSSは長くなるので全てのコードはCodePenの方を見て下さい!
フェードインで重要になるのは👆です。
初期設定で[data-inview]
のopacityを0にしておいて、それぞれの方向をtranslate
で移動させておきます。
こちらをJavaScriptで画像が画面に入ったかを監視して、opacityとtranslateを戻すことでフェードインが実現できます。それではJavaScriptのコードを見てみましょう!
JavaScript
GSAPのScrollTriggerを使います。
クラス構文で書いているので以下のような感じになります!
クラス構文も含めてそれぞれ解説します!
constructor()
ここでは、data属性の[data-inview]
が存在するかを確認し、無ければ早期リターンさせています。
switch文
ここでは先程、data-inviewをquerySelectorAll
で取得したのでforEach
で回します!
HTMLの方に書いていたフェードインさせる方向をtype
で取得し、switch文でアニメーションを左右方向からの出現のときはinviewFadeSide()
で、上下方向からの出現のときはinviewFadeVertical()
で処理させます。
最後にアニメーションをGSAPで書きます!
ここでは左右方向からの出現のinviewFadeSide()
を見ていきます。
左右方向からの出現なので、単純にxを0にするだけ & opacityを0にするだけでフェードインアニメーションが実現できます✨
まとめ
GSAP・ScrollTriggerを使用してのフェードインアニメーションを解説しました。
今回はopacityとtranslateを使用してのアニメーションでしたがclip-pathを使用するともっとリッチなWebサイトになるかと思います。
この記事が参考になれば幸いです。