왜 두 갈래로 나눴나
섹션 헤더 한 덩어리를 등장시키는 단일 reveal과, 카드 그리드를 시차로 이어 등장시키는 stagger reveal은 책임이 달라서 한 훅 안에 옵션으로 묶기보다 작은 훅 둘로 분리하는 편이 호출부가 깔끔했습니다.
설계 원칙
JS는 트리거만 IntersectionObserver가 .revealed 클래스를 부여하면 끝. 실제 모션 표현은 CSS가 담당.
stagger는 setTimeout 한 번씩 별도 RAF 루프 없이 가벼움.
repeat 옵션으로 재진입 시 다시 fade되는 형태도 지원.
함께 쓰는 CSS
초기 hidden 상태를 위한 .scroll-reveal 또는 .scroll-reveal-blur 같은 클래스가 필요합니다. 별도 스니펫(.scroll-reveal-blur)을 참고하세요.
언제 좋은가
코드가 짧고 GPU 가속이 잘 들어가 모바일에서도 부드러움
의존성 0 어떤 프로젝트에든 즉시 붙일 수 있음
언제 별로인가
물리 기반 시뮬레이션이나 복잡한 keyframe 시퀀스에는 framer-motion이 더 표현이 풍부함
초기 hidden CSS 클래스가 별도로 필요해 두 군데를 함께 관리해야 함