SSGOI LogoSSGOI

スワップトランジション

トップレベル画面間の切り替えのためのトランジション

スワップトランジション

スワップトランジションはトップレベル画面間の切り替えのためのトランジションです。Material DesignのFade Throughパターンに類似しており、前の画面が消えた後、新しい画面が小さい状態から大きくなって現れ、自然なトランジションを作り出します。

デモ

Loading demo...

UX原則

いつ使用しますか?

スワップトランジションはトップレベルで独立したセクション間を移動するときに使用します。主にボトムナビゲーション、タブ切り替え、トップレベルメニュー切り替えに最適化されています。

콘텐츠 관계적합성설명
階層関係上位/下位レベルの移動にはデプストランジションがより適切です。
トップレベル切り替えボトムナビゲーション、タブバーなど独立したセクション間の切り替えに最適です。
独立したセクション関連のないトップレベルコンテンツ間の移動にも自然に動作します。

主な使用ケース

  • ボトムナビゲーションタブ切り替え (ホーム ↔ 検索 ↔ プロフィール)
  • トップレベルメニュー切り替え (ダッシュボード ↔ 設定 ↔ 通知)
  • 独立したセクション切り替え (ニュース ↔ 天気 ↔ スポーツ)

なぜこのように動作しますか?

  1. 前の画面フェードアウト: 現在の画面が単に透明になって消えます。スケール変化なしでスムーズに退場します。

  2. 新しい画面フェードイン + スケールアップ: 前の画面が完全に消えた後、新しい画面が少し小さい状態(0.95 scale)から始まり、通常サイズ(1.0 scale)に拡大して現れます。

  3. 順次実行: OUTアニメーションが完了した後、INアニメーションが開始され、2つの画面が重ならず明確に切り替わります。

モーションデザイン

OUT (出て行くページ):

  • opacity: 1 → 0 (フェードアウトのみ)
  • scale: 変化なし

IN (入ってくるページ):

  • opacity: 0 → 1 (フェードイン)
  • scale: 0.95 → 1 (小さく始まって通常サイズへ)
  • 開始時点: OUTアニメーション完了後

基本的な使い方

ボトムナビゲーション設定

::code-group

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

<Ssgoi
  config={{
    transitions: [
      {
        from: '/home',
        to: '/search',
        transition: swap(),
        symmetric: true
      },
      {
        from: '/home',
        to: '/profile',
        transition: swap(),
        symmetric: true
      },
      {
        from: '/search',
        to: '/profile',
        transition: swap(),
        symmetric: true
      }
    ]
  }}
>
  {children}
</Ssgoi>
<script lang="ts">
  import { Ssgoi } from '@ssgoi/svelte';
  import { swap } from '@ssgoi/svelte/view-transitions';
</script>

<Ssgoi
  config={{
    transitions: [
      {
        from: '/home',
        to: '/search',
        transition: swap(),
        symmetric: true
      },
      {
        from: '/home',
        to: '/profile',
        transition: swap(),
        symmetric: true
      },
      {
        from: '/search',
        to: '/profile',
        transition: swap(),
        symmetric: true
      }
    ]
  }}
>
  <slot />
</Ssgoi>

::

ベストプラクティス

良い例

  • ボトムナビゲーションタブ間の切り替え
  • トップレベルメニューセクション間の移動
  • 独立したダッシュボードビュー間の切り替え

悪い例

  • リスト → 詳細ページ → デプストランジションを使用
  • モーダルまたはボトムシート → シートトランジションを使用
  • 階層的ナビゲーション → デプストランジションを使用

関連トランジション

  • デプス: 階層的関係の画面間移動
  • フェード: 単純なフェードのみが必要な場合
  • シート: モーダルやボトムシート