👨‍💻

【gsap】ページ内スクロールのナビゲーションにカレントを付与する

に公開
      <div class={`${css.nav_block} sticky_block`}>
        <ul class={`${css.nav} nav`}>
          <li>
            <a href="#section1" id="navitem1"> 01- xxxx </a>
          </li>
          <li>
            <a href="#section2" id="navitem2"> 02- xxxx </a>
          </li>
          <li>
            <a href="#section3" id="navitem3"> 03- xxxx </a>
          </li>
          <li>
            <a href="#section4" id="navitem4"> 04- xxxx </a>
          </li>
          <li>
            <a href="#section5" id="navitem5"> 05- xxxx </a>
          </li>
        </ul>
      </div>

DOMのIDの設定

<div class={css.inner} id="section1">
  ...
</div>
<div class={css.inner} id="section2">
  ...
</div>
<div class={css.inner} id="section3">
  ...
</div>
<div class={css.inner} id="section4">
  ...
</div>

    ScrollTrigger.create({
      trigger: '.sticky_block',
      pin: true,
      start: 'top top',
      endTrigger: '.series', //好きな要素で終わらせる。
      end: 'top bottom-=300',
    });

gsapの設定

    for (let i = 1; i <= 5; i++) {
      const navSelector = `#navitem${i}`;
      const sectionSelector = `#section${i}`;

      ScrollTrigger.create({
        trigger: sectionSelector,
        start: 'top center',
        end: 'bottom center',
        toggleClass: {
          targets: navSelector,
          className: 'active',
        },
        //markers: true,
      });
    }

Discussion