슬라이드 전환
동일 레벨 콘텐츠 간 수평 슬라이드 전환
슬라이드 전환
슬라이드 전환은 페이지가 좌우로 슬라이드하며 전환되는 효과로, 동일한 레벨의 형제 콘텐츠 간 이동 시 사용됩니다. 탭 네비게이션이나 스텝 기반 UI에서 자연스러운 수평 이동 경험을 제공합니다.
데모
Loading demo...
UX 원칙
언제 사용하나요?
슬라이드 전환은 수평적 콘텐츠 탐색(Horizontal Navigation) 시 사용됩니다.
콘텐츠 관계별 적합성
| 콘텐츠 관계 | 적합성 | 설명 | 
|---|---|---|
| 관련 없는 콘텐츠 | ❌ | 독립적인 섹션은 페이드 사용 권장 | 
| 형제 관계 | ✅ | 동일 레벨의 탭이나 스텝에 최적 | 
| 계층 관계 | ❌ | 부모-자식 구조는 드릴이나 히어로 사용 권장 | 
주요 사용 케이스
- 탭 네비게이션: 탭 UI의 콘텐츠 전환
- 이미지 갤러리: 이미지 간 스와이프 전환
- 설정 화면: 카테고리 간 수평 이동
- 온보딩 스텝: 단계별 진행 화면
왜 이렇게 동작하나요?
- 수평 제스처와 일치: 모바일의 좌우 스와이프와 자연스럽게 연결
- 탭 메타포: 실제 탭처럼 옆으로 넘기는 직관적 경험
- 진행 방향 인지: 앞으로/뒤로 가는 방향을 시각적으로 표현
모션 디자인
LEFT 방향 (다음으로):
나가는 화면: 왼쪽으로 밀려남 (현재 콘텐츠가 왼쪽으로)
들어오는 화면: 오른쪽에서 들어옴 (다음 콘텐츠가 등장)
RIGHT 방향 (이전으로):
나가는 화면: 오른쪽으로 밀려남 (현재 콘텐츠가 오른쪽으로)
들어오는 화면: 왼쪽에서 들어옴 (이전 콘텐츠가 복귀)
기본 사용법
import { Ssgoi } from '@ssgoi/react';
import { slide } from '@ssgoi/react/view-transitions';
const config = {
  defaultTransition: slide()
};
export default function App() {
  return (
    <Ssgoi config={config}>
      {/* 앱 내용 */}
    </Ssgoi>
  );
}
실전 활용 예시
1. 탭 네비게이션
탭 UI에서 콘텐츠 전환:
const config = {
  transitions: [
    {
      from: '/tabs/home',
      to: '/tabs/profile',
      transition: slide({ direction: 'left' }),
      symmetric: true  // 뒤로가기 시 자동으로 right
    },
    {
      from: '/tabs/profile',
      to: '/tabs/settings',
      transition: slide({ direction: 'left' }),
      symmetric: true
    }
  ]
};
2. 이미지 갤러리
이미지 간 스와이프 전환:
const config = {
  transitions: [
    {
      from: '/gallery/photo-*',
      to: '/gallery/photo-*',
      transition: slide({ 
        direction: 'left',
        spring: { stiffness: 300, damping: 30 }
      })
    }
  ]
};
3. 미들웨어를 통한 동적 방향
탭 순서에 따라 방향 자동 결정:
const createMiddleware = (tabs) => {
  return (from, to) => {
    const fromIndex = tabs.indexOf(from);
    const toIndex = tabs.indexOf(to);
    
    if (fromIndex < toIndex) {
      return { from: "/nav/left", to: "/nav/right" };
    } else {
      return { from: "/nav/right", to: "/nav/left" };
    }
  };
};
const config = {
  transitions: [
    {
      from: "/nav/left",
      to: "/nav/right",
      transition: slide({ direction: "left" })
    },
    {
      from: "/nav/right",
      to: "/nav/left",
      transition: slide({ direction: "right" })
    }
  ],
  middleware: createMiddleware(tabOrder)
};
성능 최적화
- transform: translateX()만 사용하여 GPU 가속 활용
- 레이아웃 재계산 없이 부드러운 60fps 유지
- 가로 스크롤 위치 자동 보존
접근성
- prefers-reduced-motion설정 시 전환 비활성화
- 키보드 네비게이션 완벽 지원
- 스크린 리더에서 탭 구조 올바르게 전달
모범 사례
✅ DO
- 탭 네비게이션이나 스텝 UI에 사용
- 이미지 갤러리의 좌우 넘김에 적용
- 설정 화면의 카테고리 간 이동에 활용
- symmetric 옵션으로 양방향 일관성 유지
- 모바일의 자연스러운 스와이프 제스처와 연결
❌ DON'T
- 관련 없는 섹션 간 이동에 사용하지 마세요 (페이드 사용)
- 계층 구조 탐색에 사용하지 마세요 (드릴이나 히어로 사용)
- 상하 스크롤과 혼용하지 마세요 (일관성 유지)
- 너무 많은 탭(5개 이상)에 사용하지 마세요
