SSGOI

스크롤 전환

페이지가 위아래로 스크롤되며 전환되는 효과

스크롤 전환

스크롤(Scroll) 전환은 페이지가 위 또는 아래로 슬라이드하며 전환되는 효과입니다. 모바일 앱에서 흔히 볼 수 있는 자연스러운 페이지 전환을 웹에서 구현합니다.

기본 사용법

import { Ssgoi } from '@ssgoi/react';
import { scroll } from '@ssgoi/react/view-transitions';

const config = {
  defaultTransition: scroll()
};

export default function App() {
  return (
    <Ssgoi config={config}>
      {/* 앱 내용 */}
    </Ssgoi>
  );
}

옵션

방향 설정

scroll({
  direction: 'up',    // 'up' | 'down' (기본값: 'up')
  spring: {
    stiffness: 300,   // 스프링 강도 (기본값: 300)
    damping: 30       // 감쇠 계수 (기본값: 30)
  }
})

방향별 동작

  • direction: 'up' (기본값)

    • 들어오는 페이지: 아래에서 위로 올라옴
    • 나가는 페이지: 위로 사라짐
  • direction: 'down'

    • 들어오는 페이지: 위에서 아래로 내려옴
    • 나가는 페이지: 아래로 사라짐

사용 예시

위로 스크롤 (기본)

const config = {
  defaultTransition: scroll()
};

아래로 스크롤

const config = {
  defaultTransition: scroll({ direction: 'down' })
};

부드러운 스크롤

const config = {
  defaultTransition: scroll({
    spring: {
      stiffness: 150,
      damping: 25
    }
  })
};

경로별 방향 설정

계층 구조에 따라 다른 방향으로 전환:

const config = {
  transitions: [
    {
      from: '/list',
      to: '/detail/*',
      transition: scroll({ direction: 'up' }),
      symmetric: true  // 반대로 갈 때는 자동으로 down
    },
    {
      from: '/parent',
      to: '/child',
      transition: scroll({ direction: 'down' })
    }
  ]
};

<Ssgoi config={config}>
  {/* 앱 내용 */}
</Ssgoi>

작동 원리

Direction: UP
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
나가는 페이지  →  위로 이동 (translateY: 0 → -100%)
들어오는 페이지 →  아래에서 위로 (translateY: 100% → 0)

Direction: DOWN
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
나가는 페이지  →  아래로 이동 (translateY: 0 → 100%)
들어오는 페이지 →  위에서 아래로 (translateY: -100% → 0)

장점

  • 직관적인 방향성으로 페이지 계층 구조 표현
  • 모바일 앱과 유사한 자연스러운 UX
  • GPU 가속을 활용한 부드러운 성능
  • 스크롤 제스처와 일관된 동작

권장 사용 사례

UP 방향

  • 목록 → 상세 페이지
  • 홈 → 서브 페이지
  • 일반적인 forward 네비게이션

DOWN 방향

  • 부모 → 자식 관계
  • 메뉴 → 하위 메뉴
  • 모달이나 오버레이 표시

주의사항

  • 페이지 높이가 viewport보다 긴 경우, 전환 시작 위치가 중요
  • 스크롤 위치는 자동으로 보존되므로 별도 처리 불필요
  • 양방향 네비게이션에는 symmetric: true 사용 권장