Knowledge

CSSのみでMPAでもSPAっぽく画面遷移できる View Transitions API

  • 投稿日:
    2024/06/12
  • 更新日:
    2024/06/12
  • 読了時間:
    4分程度
CSSのみでMPAでもSPAっぽく画面遷移できる View Transitions APIのサムネイル

Chrome126からView Transitions APIがMPAにも対応

View Transitions API自体はChrome111から実装された機能ですが、リリース当時はJavascriptと組み合わせての実装が必須であったりSPAでのみの動作する仕様であった為、当サイトは元々Barba.jsでSPAを実現させていたので静観していたのですが、Chrome(Edge)126からはMPAで尚且つCSSのみで実装が可能となったようですので、挙動確認かねてサンプルを用意してみました。

CSSでの実装要点

1.View Transitions APIを有効化

@view-transition {
  navigation: auto;
}

2.ページごとにアニメーションさせたい要素同士を紐づける

@view-transition {
  navigation: auto;
}
/* 遷移する前・後共通のアニメーションさせたい要素 */
#hoge {
  /* ここで定義したview-transition-nameの名前同士がアニメーションされる */
  view-transition-name: fuga;
}

一覧から詳細への画面遷移作例

実際の挙動の確認は、こちらから別ウインドウでご確認いただけます。
※Chrome126以上の環境でご確認ください

ビュートランジションAPIの実際の動作

実装して感じたポイント

  • 拍子抜けするぐらいにかなり簡単に実装できます。
  • 但し、MPAですので実際にページ遷移してからDOMを取得し画像やCSSでレイアウトを構築させながらアニメーションされる感じになるため、SPAに比べるとちらつきが出るケースがありますので、画像のアスペクト比率を定義したり、::view-transition-old()::view-transition-new()などを利用してフェードイン・アウトの時間を調整するなどのケアが必要になるかと思います。
  • とはいえSafariやFirefoxでは記事投稿時点では未対応であるため、view-transitionが利用できなくても問題ないように@supportなどで振り分けしたほうが良いかもしれない。

参考サイト