PORTFOLIO & WEB DESIGN MEMORANDOM BLOG   
PORTFOLIO & WEB DESIGN MEMORANDOM BLOG   

【JavaScript】GSAPを複数要素に一括適用する関数の書き方

gsap.utils.toArray() + forEach() + gsap.to() の組み合わせは、
複数の要素に同じアニメーションを適用する基本形としてよく使われます。

GSAPを複数要素に一括適用するテンプレート

  1. function applySampleAnimation(elements) {
  2.     gsap.utils.toArray(elements).forEach(el => {
  3.         gsap.to(el, {
  4.             opacity: 1,
  5.         });
  6.     });
  7. }
  8. applySampleAnimation(".sample");

1. gsap.utils.toArray(elements)

→ .sample というセレクタに一致する全要素を配列化。

2. .forEach(el => {…})

→ 各要素ごとに個別にアニメーションを適用。

3. gsap.to(el, {…})

→ 各要素に opacity: 1 のアニメーションを実行。

このパターンを覚えれば全て応用が効く

  1. gsap.registerPlugin(ScrollTrigger);
  2. function animateItems(selector) {
  3.   gsap.utils.toArray(selector).forEach(el => {
  4.     gsap.from(el, {
  5.       opacity: 0,
  6.       y: 50,
  7.       duration: 1,
  8.       scrollTrigger: {
  9.         trigger: el,
  10.         start: "top 80%",
  11.         toggleActions: "play none none none"
  12.       }
  13.     });
  14.   });
  15. }
  16. animateItems(".fade-in");

• フェード
• スライド
• スクロール連動
• スケール
• 複数要素への適用

など全部対応できます!

必要な効果(ブラー、ズーム、回転など)に応じて .to() や .from() の中身だけ変えればOKです。
もっと高度な応用(タイムラインや連動)をしたいときにもこの基礎が効いてきます。

gsap.registerPlugin(ScrollTrigger); は必須

ScrollTrigger は GSAP 本体とは別のプラグインです。
そのため、使う前に明示的に登録(=読み込み)する必要があります。
gsap.registerPlugin(ScrollTrigger); は1回だけ宣言すればOK!!

HTMLにCDNの読み込みも必ず必要です!!!!

  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>

サンプル1

See the Pen
Untitled
by ryotom (@ryotam-smoke)
on CodePen.

サンプル2

See the Pen
Untitled
by ryotom (@ryotam-smoke)
on CodePen.

サンプル3

See the Pen
Untitled
by ryotom (@ryotam-smoke)
on CodePen.

MILMONA   MILMONA   MILMONA   MILMONA   MILMONA   
MILMONA   MILMONA   MILMONA   MILMONA   MILMONA