yamoo9 / likelion-FEQA

질문/답변 — 프론트엔드 스쿨, 멋사
29 stars 9 forks source link

[LAB-12] GSAP 스크롤트리거 관련 이슈 #228

Closed sykang013 closed 1 year ago

sykang013 commented 1 year ago

질문 작성자

강수영

문제 상황

1️⃣ 에러 예시

2️⃣ 에러 예시

프로젝트 저장소 URL

환경 정보

yamoo9 commented 1 year ago

문제 분석

GSAP [fromTo](https://greensock.com/docs/v3/GSAP/gsap.fromTo()), scrollTrigger 혼용 사용에 따른 문제로 분석됩니다.

fromTo 애니메이션이 적용되기 전, scrollTrigger 애니메이션이 동시 설정 됨에 따라 pin 높이를 정상적으로 처리하지 못하는 문제를 보입니다. 😳

문제 해결

fromTo 애니메이션이 완료된 이후, scrollTrigger 애니메이션이 실행되어야 합니다.

useLayoutEffect(() => {

  // fromTo 애니메이션 1
  gsap.fromTo(
    '.landingSectionAnimation',
    { y: 100, opacity: 0 },
    {
      y: 0,
      opacity: 1,
      duration: 1.2,
      stagger: { each: 0.1, from: 'start' },
    }
  );

  // fromTo 애니메이션 2
  gsap.fromTo(
    '.landingElementAnimation',
    { y: 20, opacity: 0 },
    {
      y: 0,
      opacity: 1,
      duration: 0.6,
      stagger: { each: 0.1, from: 'start' },
      // 애니메이션 완료 후, scrollTrigger 애니메이션 실행
      onComplete: () => pinAnimation(),
    }
  );

  // scrollTrigger 애니메이션
  const pinAnimation = () => {
    gsap.to('.imgContainer', {
      scrollTrigger: {
        trigger: '.triggerOriginal',
        start: 'top top',
        end: 'bottom 75%',
        pin: true,
        pinSpacing: true,
        scrub: true,
        markers: true,
      },
      x: -858,
    });
    };

}, []);

적용 결과

수정 코드가 적용된 화면은 아래 영상을 통해 확인할 수 있습니다.

https://user-images.githubusercontent.com/1850554/227692793-5fbc0942-0ac8-4edc-9e54-9be6c20830d5.mp4

가이드 파일

첨부된 가이드 파일을 다운로드 받아 확인해보세요. 😃

src.zip