👨‍💻

【gsap】scrollTriggerとSplitTextで1文字ずつアニメーションさせる

に公開

HTML

    <div class={`${css.title} fv_title`}>
      FIRST LINE<br />
      SECOND LINE<br />
      THIRD LINE
    </div>

js import

  import { gsap } from 'gsap';
  import { ScrollTrigger } from 'gsap/ScrollTrigger';
  import { SplitText } from 'gsap/SplitText';

js SpritTextで分割

  gsap.registerPlugin(ScrollTrigger, SplitText);
  let split = SplitText.create('.fv_title', {
    type: 'lines, chars',
    mask: 'lines',
  });

js scrollTriggerでアニメーション

  gsap.fromTo(
    split.chars,
    {
      autoAlpha: 0,
      y: '100%',
    },
    {
      autoAlpha: 1,
      y: 0,
      stagger: 0.03,
      duration: 1,
      scrollTrigger: {
        trigger: '.fv_title',
        start: 'top bottom',
        toggleClass: {
          targets: '.fv_title',
          className: 'active',
        },
        once: true,
      },
    },
  );

Discussion