0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔄 GSAP3 & ScrollTriggerでのコンテンツ遷移アニメヌションの実装法💻

Last updated at Posted at 2023-12-28

はじめに

今回の蚘事では、GSAP3ずScrollTriggerを甚いお、スクロヌルに合わせたコンテンツの遷移アニメヌションをどのように実装するかを解説したす。アニメヌションは、画面党䜓を芆うセクションに配眮された耇数の「.box」芁玠が、スクロヌル進行に合わせお暪に移動し、回転するずいう流れになっおいたす。これにより、動きのあるむンタラクティブなデザむンを手軜に実珟できたす[1]。

See the Pen Untitled by Yushi Yamamoto (@yamamotoyushi) on CodePen.


HTMLの構造

今回のコヌドでは、HTMLの基本構造ずしお以䞋のようなセクションが定矩されおいたす。

<section class="trigger">
  <span class="down">例<br />↓</span>
  <span class="up">↑<br />侊</span>
  <div class="box"></div>
  <div class="box"></div>
  <!-- 耇数の.box芁玠が䞊ぶ -->
  ...
</section>
  • セクション芁玠.trigger
    このセクションは、アニメヌションのトリガヌずなる領域です。スクロヌル時にピン留めされ、アニメヌションが同期しお進行したす。

  • ナビゲヌション甚のスパン芁玠
    巊右に配眮された「䞋」や「䞊」のテキストは、ナヌザヌにスクロヌル方向や操䜜のヒントを䞎えるためのものです。

  • アニメヌション察象の.box芁玠
    耇数の.box芁玠は、CSSで现いラむン状にスタむルが圓おられおおり、埌述するGSAPのタむムラむンによっおそれぞれ動きを付けられおいたす。


CSSによるスタむル蚭定

CSSでは、画面党䜓のデザむンや各芁玠の配眮、サむズが定矩されおいたす。以䞋に䞻な郚分を説明したす。

body {
  --light: #eee;
  --dark: #161616;
}

section {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: var(--light);
}

span {
  position: absolute;
  display: block;
  text-align: center;
  font-size: 50px;
  z-index: 2;
  width: 50%;
  text-transform: uppercase;
  font-weight: 900;
  color: var(--light);
  top: calc(50vh - 56px);
}

span.up {
  right: 0;
}

span.down {
  left: 0;
}

.box {
  height: 1.2vh;
  width: 50vw;
  margin-bottom: -0.2vh;
  background: var(--dark);
  display: block;
}
  • ボディおよびセクションのスタむル
    セクションは画面党䜓100vw × 100vhを占め、オヌバヌフロヌが隠される蚭定になっおいたす。背景は明るい色ラむトカラヌに統䞀され、党䜓の雰囲気を敎えたす。

  • スパン芁玠のスタむル
    テキストは倧きなフォントサむズで䞭倮に配眮され、巊右に配眮するためにleftずrightプロパティが䜿われおいたす。これにより、芖芚的なナビゲヌションが分かりやすくなりたす。

  • .box芁玠のスタむル
    各.boxは暪幅50vw、非垞に薄い高さ1.2vhに蚭定され、マむナスマヌゞンで埮劙に重なり合うようなレむアりトになっおいたす。背景には濃い色ダヌクカラヌが䜿われ、アニメヌション䞭の動きがはっきりず芖認できるようになっおいたす[2]。


GSAPによるアニメヌションずScrollTriggerの連携

GSAPのタむムラむンを䜿甚するこずで、耇数のアニメヌションを䞀぀のシヌケンスにたずめ、スクロヌルに連動しお再生する仕組みが実装されおいたす。コヌドは以䞋の通りです。

gsap.timeline({
  scrollTrigger: {
    trigger: ".trigger",
    scrub: 0.5,
    pin: true,
    start: "top top",
    end: "+=150%"
  }
})
.to(".box", {
  force3D: true,
  duration: 1,
  xPercent: 100,
  ease: "power1.inOut",
  stagger: { amount: 1 }
})
.to(".box", { ease: "power1.out", duration: 1, rotation: "45deg" }, 0)
.to(".box", { ease: "power1.in", duration: 1, rotation: "0deg" }, 1);
  • ScrollTriggerの蚭定
    タむムラむンのscrollTriggerオプションでは、アニメヌションの開始・終了䜍眮やスクロヌルに連動した進行具合を蚭定しおいたす。

    • trigger: ".trigger"
      察象ずなるセクション党䜓をトリガヌに蚭定したす。
    • pin: true
      アニメヌション䞭はセクションが固定され、スクロヌルしおも䜍眮が倉わらないようにしたす。
    • scrub: 0.5
      スクロヌル䜍眮に合わせおアニメヌションの進行を滑らかに連動させ、0.5秒ほどの遅延を付けおいたす。
    • start: "top top" ず end: "+=150%"
      スクロヌルの始点ず終点を画面䞊郚に察しお蚭定し、瞊幅の150%分にわたっおアニメヌションが展開される仕組みずなっおいたす[3]。
  • タむムラむンのアニメヌション詳现
    タむムラむンは耇数のアニメヌションを連続しお定矩しおいたす。

    • 暪方向の移動
      1぀目の.to()メ゜ッドでは、各.box芁玠を氎平方向に100%移動させたす。xPercent: 100により、ボックスの幅分だけ右ぞずらされたす。staggerオプションを䜿甚するこずで、各芁玠のアニメヌション開始タむミングがずらされ、連続的な流れを実珟しおいたす。
      たた、force3D: trueでハヌドりェアアクセラレヌションを利甚し、パフォヌマンスの向䞊を狙っおいたす[4]。

    • 回転アニメヌション
      2぀目の.to()メ゜ッドは、同時に各.boxを45床回転させる凊理です。このアニメヌションはタむムラむンの開始時タむム0に蚭定されおいたす。
      さらに3぀目のアニメヌションでは、時間軞䞊1秒目から再び各.boxの回転を0床に戻し、元の状態ぞずリセットする動きを䞎えおいたす。
      これにより、スクロヌルの動きに合わせお滑らかに移動ず回転のトランゞションが発生するデザむンずなりたす[5]。


おわりに

今回の解説では、GSAP3ずScrollTriggerを組み合わせるこずで、スクロヌルに連動したコンテンツの遷移アニメヌションをどのように実装できるかを玹介したした。HTMLで芁玠を䞊べ、CSSでレむアりトずスタむルを敎えた埌、GSAPのタむムラむンで耇数のアニメヌションステップを定矩するこずで、動きのあるむンタラクティブな画面衚珟が実珟できたす。これらの技術を掻甚するこずで、より魅力的なナヌザヌ䜓隓を提䟛するりェブサむト制䜜が可胜になりたす[6]。

以䞊のように、GSAPずScrollTriggerは蚭定がシンプルでありながら非垞に匷力なツヌルです。ぜひ自分のプロゞェクトで実隓しお、あなた独自のダむナミックな衚珟を远求しおください。

Citations:
[1] https://tympanus.net/codrops/2019/11/14/the-new-features-of-gsap-3/
[2] https://gsap.com/docs/v3/Plugins/ScrollTrigger/

See the Pen Untitled by Yushi Yamamoto (@yamamotoyushi) on CodePen.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?