Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. Web API
  3. ViewTransition

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

ViewTransition

Baseline 2025
Newly available

Since October 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Experimental:これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

ViewTransitionビュー遷移 API のインターフェイスで、ビュー遷移を表し、トランジションが様々な状態(例えば、アニメーションを実行する準備ができている、またはアニメーションが終了した)に達したときに反応する機能、またはトランジションを完全にスキップする機能を提供します。

このオブジェクト型はdocument.startViewTransition() メソッドが返します。startViewTransition() が呼び出されると、ビュー遷移のプロセスで説明されている一連のステップに従います。これは様々なプロミスが履行されるタイミングについても説明しています。

インスタンスプロパティ

ViewTransition.finishedExperimental

Promise で、トランジションのアニメーションが完了し、新しいページビューがユーザーに表示され操作可能になると履行されます。

ViewTransition.readyExperimental

Promise で、擬似要素ツリーが作成され、トランジションのアニメーションが始まろうとすると履行されます。

ViewTransition.updateCallbackDoneExperimental

Promise で、document.startViewTransition() のコールバックが返すプロミスが履行されたときに履行されます。

インスタンスメソッド

skipTransition()Experimental

ビュー遷移のアニメーション部分をスキップします。ただし、 DOM を更新するdocument.startViewTransition() コールバックの実行はスキップしません。

次の例では、ViewTransition.ready プロミスを使用して、クリック時のユーザーカーソルの位置から発生する独自の円形表示ビュー遷移を発生させ、ウェブアニメーション API によってアニメーションが指定されています。

js
// 最後のクリックイベントを保存let lastClick;addEventListener("click", (event) => (lastClick = event));function spaNavigate(data) {  // この API に対応していないブラウザーのためのフォールバック  if (!document.startViewTransition) {    updateTheDOMSomehow(data);    return;  }  // クリック位置を取得するか、画面の中央へフォールバックする  const x = lastClick?.clientX ?? innerWidth / 2;  const y = lastClick?.clientY ?? innerHeight / 2;  // 最も遠いコーナーまでの距離を取得  const endRadius = Math.hypot(    Math.max(x, innerWidth - x),    Math.max(y, innerHeight - y),  );  // トランジションを作成  const transition = document.startViewTransition(() => {    updateTheDOMSomehow(data);  });  // 擬似要素が作成されるのを待つ  transition.ready.then(() => {    // ルートの新しいビューをアニメーション    document.documentElement.animate(      {        clipPath: [          `circle(0 at ${x}px ${y}px)`,          `circle(${endRadius}px at ${x}px ${y}px)`,        ],      },      {        duration: 500,        easing: "ease-in",        // アニメーションさせる擬似要素を指定        pseudoElement: "::view-transition-new(root)",      },    );  });}

このアニメーションには以下の CSS も必要です。既定のアニメーションをオフにし、古いビューと新しいビューの状態が混ざり合わないようにします(新しい状態はビュー遷移の遷移ではなく、古い状態のすぐ上に「ワイプ」されます)。

css
::view-transition-image-pair(root) {  isolation: auto;}::view-transition-old(root),::view-transition-new(root) {  animation: none;  mix-blend-mode: normal;  display: block;}

仕様書

Specification
CSS View Transitions Module Level 1
# viewtransition

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2026 Movatter.jp