왜 blur까지 함께 푸는가
opacity와 translateY만 있는 일반 fade-up은 이미 흔합니다. 여기에 filter blur를 함께 풀면 카드가 단순히 미끄러져 나타나는 게 아니라 "멀리서 또렷해지며 다가오는" 듯한 깊이감이 생기고, 사용자 시선을 카드의 콘텐츠로 빠르게 끌어당깁니다.
JS와 책임 분리
이 클래스는 hidden 상태와 transition만 정의합니다. 트리거(언제 .revealed를 추가할지)는 IntersectionObserver든, 스크롤 progress든, 단순 setTimeout이든 어떤 것이든 결합 가능합니다. 함께 쓰는 가장 간단한 짝은 별도 스니펫의 useScrollReveal 훅입니다.
접근성
prefers-reduced-motion 미디어 쿼리에서 모든 transformfiltertransition을 즉시 종료 상태로 고정합니다. 모션 감소를 켠 사용자는 카드가 처음부터 보이게 됩니다.
언제 좋은가
opacity + translateY만보다 훨씬 풍부한 깊이감
JS 책임이 별도 스니펫의 useScrollReveal 훅입니다.