gsapのregisterEffectを使ってアニメーションを使い回す方法

gsap

gsapのregisterEffectを使ってアニメーションを使い回す方法を紹介します。
複数の要素に対して別のアニメーションを簡単にかつ簡潔に適用することができるようになります。

デモ

See the Pen
gsap keyframes
by Sosak (@Sosak2021)
on CodePen.

gsapのregisterEffectを使ってアニメーションを使い回す方法

gsap.registerEffect({
  name: 'imgAnimation',
  effect: (targets, config) => {
    return gsap.to(targets, { ここにeffects });
  },
  defaults: { ここにデフォルトのeffects }
});

上のコードがおおまかな雛形となります。
まずregisterEffect()メソッドはオブジェクトをとります。
nameを決める必要があるのと、effectで2つ引数をとって、gsapのtoやfromなどのメソッドをreturnすることで使えるようになります。
targetsはアニメーションさせたい要素が入ります。
effectsの部分にアニメーションの詳細が入ります。
また、デフォルトを設定することで、毎回書かなくて良くなるというメリットが生まれます。

const img1 = document.querySelector('.img1');

gsap.registerEffect({
  name: 'imgAnimation',
  effect: (targets, config) => {
    return gsap.to(targets, {
      duration: config.duration,
      y: 200,
      scale: 1.5,
      rotation: config.rotation,
      delay: config.delay
    });
  },
  defaults: {duration: 2, rotation: 180, delay: 0.2}
});

gsap.effects.imgAnimation(img1, {duration: 10});
gsap.effects.imgAnimation('.img2', {duration: 5, rotation: 360, delay: 0.5});
gsap.effects.imgAnimation('.img3', {duration: 3, rotation: 45, delay: 0.8});

こうすることで、img1からimg3にそれぞれ別のアニメーションを簡単にかつ簡潔に適用することができるようになります。

gsap

Posted by devsakaso