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

浏览器兼容性

另见