View Transitions API
CSS View Transitions APIを使って、ページや要素の滑らかなトランジションアニメーションを作成します。
「View Transitions API」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。
View Transitions API とは
View Transitions API(Chrome 111 以降)を使うと、ページの異なる状態間やページ遷移の間を、滑らかにアニメーションさせられます。変更前と変更後のスクリーンショットを取得し、CSS アニメーションを使ってその間をモーフィングすることで、ウェブ上でアプリのようなトランジションを実現します。
同一ドキュメント内のトランジション
DOM の更新を document.startViewTransition(() => updateDom()) で囲むと、同じページ内のトランジションを開始できます。ブラウザーが以前の状態を取得し、更新を実行してから新しい状態を取得し、その間を自動的にクロスフェードします。
<button id="update-btn">Update Content</button>
<div class="content">Before update</div>
デフォルトのクロスフェード
CSS を何も指定しなくても、View Transitions はページの以前の状態と新しい状態の間でシンプルなクロスフェードを実行します。この JavaScript の 1 行だけで、以前なら複雑な CSS アニメーションの制御や専用のアニメーションライブラリが必要だった、洗練されたトランジションを追加できます。
CSS 疑似要素
この API は 4 つの疑似要素を公開します。::view-transition(ルートのオーバーレイ)、::view-transition-old(root)(以前のページのスクリーンショット)、::view-transition-new(root)(新しいページのスクリーンショット)、::view-transition-image-pair(root) です。CSS アニメーションでこれらをカスタマイズできます。
view-transition-name による名前付きトランジション
トランジションの前後で存在し続ける要素に view-transition-name: hero-image を指定します。API がその要素を以前の位置とサイズから新しい位置とサイズへモーフィングするため、要素単位の滑らかなアニメーションを自動的に作成できます。
<div class="hero-img"></div>
カスタムアニメーション
疑似要素にカスタムキーフレームを指定すると、デフォルトのクロスフェードを上書きできます。前方へのナビゲーションでは右からスライドインし、戻る操作では左からスライドインさせます。::view-transition-new(root) と ::view-transition-old(root) を @keyframes の対象にしてください。
MPA トランジション(Navigation API)
ドキュメントをまたぐ View Transitions(Chrome 126 以降)を使うと、マルチページアプリでページ全体のナビゲーション間をアニメーションさせられます。CSS に @view-transition { navigation: auto; } を追加するだけで、ブラウザーが HTML ページ間のトランジションを自動的に処理します。JavaScript は必要ありません。
アクセシビリティ:動きの設定への配慮
前庭障害のあるユーザーに、動きの激しいトランジションを体験させてはいけません。トランジションのアニメーションを @media (prefers-reduced-motion: no-preference) で囲むと、動きを減らしたいユーザーにはカスタムアニメーションを無効にしつつ、DOM の機能的な更新は維持できます。
<p>This rule targets browser-generated <code>::view-transition-old(root)</code> and <code>::view-transition-new(root)</code> pseudo-elements — visible only during an active view transition, not in a static preview.</p>
SPA フレームワークとの統合
React Router v6.4 以降、Vue Router、Astro は View Transitions をサポートしています。これらのフレームワークは、ルート変更を自動的に startViewTransition で囲みます。ナビゲーションやレイアウトの外枠など、トランジション中も残る要素に view-transition-name を指定して、ルートごとのトランジションスタイルを設定できます。
パフォーマンスに関する考慮事項
View Transitions はページのスクリーンショットを取得するため、複雑なレイアウトでは負荷が高くなることがあります。合成レイヤーが多い大規模なページでは、取得中に動きが引っかかる場合があります。トランジションの時間は 300ms 未満にし、非常に複雑なサブツリーのトランジションは避けてください。
段階的な機能強化
使用する前に API の利用可能性を確認してください。if (!document.startViewTransition) { updateDom(); return; } フォールバックでは、アニメーションなしで通常どおり DOM を更新します。View Transitions は段階的な機能強化です。対応していない環境でもアプリは動作し、対応している環境では体験が向上します。
理解度チェック
View Transition 中に、要素へ view-transition-name を指定すると何が可能になりますか?
まとめ
View Transitions API を使うと、最小限のコードで DOM の状態間やページ遷移間のクロスフェードとモーフィングのアニメーションを実現できます。名前付きのトランジション要素は自動的にモーフィングされ、疑似要素にカスタムアニメーションを指定するとデフォルトのクロスフェードを置き換えられます。prefers-reduced-motion に配慮し、対応していないブラウザーには段階的な機能強化を使用してください。
よくある質問
「View Transitions API」レッスンは無料ですか?
はい。「View Transitions API」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。
「View Transitions API」で何を学びますか?
CSS View Transitions APIを使って、ページや要素の滑らかなトランジションアニメーションを作成します。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CSS Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「View Transitions API」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCSS Academyレッスンでコードを書いて実行できますか?
はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ネイティブCSSネスティング
- :has()関係擬似クラス
- スコープ付きスタイルのための@scope
- View Transitions API