ViewTransition: finished 屬性

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

ViewTransition 介面的 finished 只讀屬性是一個 Promise,它在過渡動畫完成後兌現,此時新的頁面檢視對使用者可見且可互動。

僅在同文檔(SPA)過渡的情況下,如果傳遞給 document.startViewTransition() 的回撥函式丟擲異常或返回一個被拒絕的 promise,finished 才會拒絕。這表示頁面新狀態未成功建立。

如果過渡動畫未能啟動,或者在使用 ViewTransition.skipTransition() 期間被跳過,最終狀態仍然會達到,因此 finished 仍會兌現。

一個 Promise。

示例

針對不同導航的不同過渡效果

有時,特定的導航需要特別定製的過渡效果,例如,“後退”導航可能需要與“前進”導航不同的過渡效果。處理這種情況的最佳方法是在 <html> 元素上設定一個類名,處理過渡——使用定製的選擇器應用正確的動畫——然後在過渡完成後移除該類名。

js
async function handleTransition() {
  if (isBackNavigation) {
    document.documentElement.classList.add("back-transition");
  }

  const transition = document.startViewTransition(() =>
    updateTheDOMSomehow(data),
  );

  try {
    await transition.finished;
  } finally {
    document.documentElement.classList.remove("back-transition");
  }
}

注意: isBackNavigation 不是內建功能;它是一個理論上的函式,可以使用 Navigation API 或類似方式實現。

規範

規範
CSS 檢視過渡模組第 1 級
# dom-viewtransition-finished

瀏覽器相容性

另見