GSAPの基本的な使い方についてまとめていきたいと思います。

基本的な使い方

まずはじめに、GSAPの本体を読み込む必要があります。

CDNで読み込む方法が一番簡単なので、以下のスクリプトを貼り付けましょう。

<!-- bodyの閉じタグ辺りに貼り付けます -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script><!-- GSAP本体 -->

<script src="/assets/js/script.js"></script><!-- アニメーション設定用 -->
</body>
</html>

要素をアニメーションさせるには、対象となる要素を指定して、変化させたいプロパティの値を指定します。

See the Pen Untitled by gri-t (@gri-t) on CodePen.

// .box1をx軸方向に移動させる
gsap.to('.box1', { x: 500, duration: 2 });

// .box2をx軸方向に移動させる
gsap.to('.box2', { x: 500, duration: 2, delay: 2 });

// .box3の背景色を変化させる
gsap.to('.box3', { backgroundColor: '#009ec2', duration: 5 });

// .box4の背景色を変化させる・無限に繰り返す
gsap.to('.box4', { backgroundColor: '#00507E', duration: 3, repeat: -1 });

指定できるプロパティ

代表的なプロパティには以下のようなものがあります。

プロパティ意味デフォルト値
delayアニメーションを開始するまでの遅延時間(秒)0
durationアニメーションの継続時間(秒単位)0.5
easeアニメーションの変化率power1.out
overwrite上書きするかfalse
pausedtrueの場合、一時停止させるfalse
repeatアニメーションを何回繰り返すかの指定(-1:無限に繰り返す)0
repeatDelayリピートの間に待機する時間(秒単位)を指定する0
stagger複数のターゲットが定義されている場合、それぞれの開始時間を簡単にずらすことができる0
yoyotrueの場合、yoyoを有効化false

アニメーションの指定方法

GSAPではCSS関連のプロパティのほとんどをアニメーションすることができます。

See the Pen Untitled by gri-t (@gri-t) on CodePen.

GSAP説明
x: 20x軸方向に移動(px)
y: 20y軸方向に移動(px)
scale: 1.5拡大・縮小
scaleX: 1.5x軸方向に拡大・縮小
scaleY: 1.5y軸方向に拡大・縮小
rotation: 360回転角度
skewX: '20deg'x軸方向の傾斜変形
skewY: '20deg'y軸方向の傾斜変形
xPercentx軸方向に移動(要素の横幅に対して:%)
yPercenty軸方向に移動(要素の縦幅に対して:%)

トゥイーン(Tween)の種類

アニメーションをどの状態からどのように開始させるかの設定は以下の4つの方法で指定します。

  • gsap.to():現在の状態からアニメーション
  • gsap.from():現在の状態に戻るアニメーション
  • gsap.fromTo():指定した初期状態から指定した完了状態にアニメーション
  • gsap.set():初期状態を指定

See the Pen Untitled by gri-t (@gri-t) on CodePen.

// 3秒後に現在の状態からアニメーションを開始
gsap.to('.target1', {
  rotation: 180,
  repeat: -1,
  duration: 3,
}, 3);

// 3秒後に現在の状態に戻るアニメーションを開始
gsap.from('.target2', {
  rotation: 180,
  repeat: -1,
  duration: 3,
}, 3);

// 3秒後に指定した初期状態から指定した完了状態にアニメーションを開始
gsap.fromTo('.target3', {
  x: 100,
}, {
  x: 0,
  repeat: -1,
  duration: 3,
}, 3);

// 初期状態を指定
gsap.set('.target4', {
  x: 100,
  rotation: 20,
});

イージングの種類

アニメーションのイージングの指定には、easeプロパティを使用します。

初期値は「power1.out」となっています。公式サイト「GreenSock公式 - Eases」ではイージングが試せるので、参考になると思います。

See the Pen Untitled by gri-t (@gri-t) on CodePen.

// x軸方向に移動させる
gsap.to('.target1', { 
  x: 400, duration: 2, ease: 'power1.out'
});

gsap.to('.target2', { 
  x: 400, duration: 2, ease: 'power2.out'
});

gsap.to('.target3', { 
  x: 400, duration: 2, ease: 'power3.out'
});

gsap.to('.target4', { 
  x: 400, duration: 2, ease: 'power4.out'
});

gsap.to('.target5', { 
  x: 400, duration: 2, ease: 'back.out'
});

gsap.to('.target6', { 
  x: 400, duration: 2, ease: 'elastic.out'
});

gsap.to('.target7', { 
  x: 400, duration: 2, ease: 'bounce.out'
});

gsap.to('.target8', { 
  x: 400, duration: 2, ease: 'circ.out'
});

gsap.to('.target9', { 
  x: 400, duration: 2, ease: 'expo.out'
});

gsap.to('.target10', { 
  x: 400, duration: 2, ease: 'sine.out'
});

gsap.to('.target11', { 
  x: 400, duration: 2, ease: 'slow(0.7, 0.7, false)'
});

gsap.to('.target12', { 
  x: 400, duration: 2, ease: 'steps(12)'
});
outinOutin
nonenonenone
power1.outpower1.inOutpower1.in
power2.outpower2.inOutpower2.in
power3.outpower3.inOutpower3.in
power4.outpower4.inOutpower4.in
back.outback.inOutback.in
elastic.outelastic.inOutelastic.in
bounce.outbounce.inOutbounce.in
circ.outcirc.inOutcirc.in
expo.outexpo.inOutexpo.in
sine.outsine.inOutsine.in
slow(数値, 数値, boolean)
steps(数値)
Custom

イベント発生時にアニメーションを適用する

それぞれのボタンに「mouseenter」イベントと「click」イベントが発生したときに、指定したアニメーションが適用させるように設定しています。

See the Pen Untitled by gri-t (@gri-t) on CodePen.

const button1 = document.getElementById('button1');
const button2 = document.getElementById('button2');

// button1にカーソルが乗ったらアニメーション開始
button1.addEventListener('mouseenter', () => {
  gsap.to('.target1', {
    backgroundColor: '#007c08', // 背景色を変更
    duration: 2
  });
});

// button2をクリックしたらアニメーション開始
button2.addEventListener('click', () => {
  gsap.to('.target2', {
    x: 400,
    rotation: 360,
    duration: 2
  });
});