View Transitions API
ページ遷移やDOM更新時のアニメーションはこれまでJSライブラリに頼るしかなかった。View Transitions API を使うと、ブラウザが自動でスナップショットを撮り、CSSアニメーションでトランジションを行う。MPAでも使用可能。
概要
ページ遷移やDOM更新時のアニメーションはこれまでJSライブラリに頼るしかなかった。View Transitions API を使うと、ブラウザが自動でスナップショットを撮り、CSSアニメーションでトランジションを行う。MPAでも使用可能。
対応ブラウザ
デスクトップ
Chrome 111+
Edge 111+
Safari 18+
Firefox 144+
モバイル
Chrome Android 111+
Safari iOS 18+
Firefox Android 144+
基本構文
CSS
document.startViewTransition(() => {
updateDOMSomehow();
});
::view-transition-old(root) {
animation: fade-out 0.3s ease;
}
::view-transition-new(root) {
animation: fade-in 0.3s ease;
}
.hero-image {
view-transition-name: hero;
} 実務での使いどころ
-
ページ遷移アニメーション
MPAでもSPAでも、ページ間のシームレスなトランジションをCSSだけで定義できる。
-
画像の共有要素トランジション
一覧のサムネイルが詳細ページの大きな画像に滑らかに変形するHero Transition。
注意点
- 複雑な DOM 変更と組み合わせると予期しない挙動が起きることがある。
- prefers-reduced-motion に対応し、アニメーションを無効化できるようにすること。
フォールバック戦略
CSS
@media (prefers-reduced-motion: reduce) {
::view-transition-old(root),
::view-transition-new(root) {
animation: none;
}
} アクセシビリティ
- prefers-reduced-motion: reduce を必ずハンドリングし、動きを無効化できるようにする。
- アニメーション中もコンテンツにアクセスできるようにする。