View Transition API でなめらかな表示切替

アニメーション Medium #js #view-transition #animation #modern

document.startViewTransition() で DOM 変更前後を自動補間アニメーション。ブラウザネイティブの View Transitions API でリスト→グリッド切替を演出。

▶ プレビュー

解説

View Transition API でなめらかな表示切替は、アニメーションカテゴリの「view-transition」に分類される実装パターンです。CSS と JavaScript の組み合わせで構成され、難易度は中級レベル。

View Transitions API は、DOM の前後差分を「自動でアニメーション補間」してくれる強力な機能です。これまで React Spring や Framer Motion のような重量級ライブラリが必要だった「ふわっと切り替わる」演出が、ブラウザ標準だけで実装できます。

このサンプルでは、リスト表示とグリッド表示を切り替える際、document.startViewTransition(() => 描画変更) で囲むだけで、要素のフェード + サイズ変化が自動でアニメーションされます。

仕組み

下記コードタブから HTML / CSS / JS をそれぞれ確認・コピーできます。プレビュー領域では実際の動作をその場で確認可能です。

JavaScript 部分は vanilla(プレーン)JS で書かれており、jQuery / React / Vue いずれの環境にも持ち込めます。

アニメーションのタイミング(duration / easing)は CSS の transitionanimation プロパティで簡単に調整できます。サイトの世界観に合わせて微調整してください。

注意点 / カスタマイズ時のポイント

Chrome / Edge 111+、Safari 18+ で対応。Firefox は未対応(2026 年時点)。document.startViewTransition の存在チェックは必須で、未対応ブラウザではただ即座に切り替わる動作にフォールバックします。

SPA のページ遷移でも使えますが、view-transition-name をうまく付けないと「全体クロスフェード」になり個別要素のアニメーションが消えるので注意。

よくある質問

ページ遷移にも使えますか?
はい。Multi-page View Transitions(MPA)で別ページに移動する際もアニメーションできます。@view-transition { navigation: auto; } を CSS に書くだけで有効化できます(Chrome 126+)。
個別の要素にカスタムアニメーションを付けたい
対象要素に view-transition-name: hero 等を付け、::view-transition-old(hero) / ::view-transition-new(hero) 疑似要素で個別アニメーションを定義できます。
このスニペットは商用利用できますか?
はい。moatway がオリジナルで制作したスニペットは商用・個人問わず自由にご利用いただけます。クレジット表記も不要です。
そのまま貼り付ければ動きますか?
はい。HTML / CSS / JS タブのコードをそれぞれ自分のファイルにコピーして貼り付ければ動きます。クラス名が他の CSS と衝突しないよう、必要に応じてリネームしてください。
ブラウザ対応は?
最新 2 世代の Chrome / Safari / Firefox / Edge で動作確認しています。Internet Explorer はサポート対象外です。
jQuery でも書けますか?
この実装は vanilla JavaScript で書いています。jQuery が必要であれば document.querySelector$() に置き換える程度で動作しますが、近年は jQuery を使わない方が軽量で推奨されます。
inspired by 2026 modern CSS / Web APIs / 追加日:2026-05-13
← すべてのスニペットへ戻る