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.
* Some parts of this feature may have varying levels of support.
Das ViewTransition-Interface der View Transition API repräsentiert eine aktive View-Transition und bietet Funktionalitäten, um auf verschiedene Zustände der Transition zu reagieren (z. B. bereit, die Animation auszuführen, oder Animation abgeschlossen) oder die Transition ganz zu überspringen.
Dieser Objekttyp wird auf folgende Weise bereitgestellt:
- Über die Eigenschaft
Document.activeViewTransition. Dies bietet eine konsistente Möglichkeit, auf die aktive View-Transition in jedem Kontext zuzugreifen, ohne dass es notwendig ist, sie für einen späteren einfachen Zugriff zu speichern. - Im Fall von Transitionen im selben Dokument (SPA) wird sie auch von der Methode
document.startViewTransition()zurückgegeben. - Im Fall von Transitionen zwischen Dokumenten (MPA) wird sie ebenfalls bereitgestellt:
- Auf der ausgehenden Seite über die Eigenschaft
PageSwapEvent.viewTransitiondespageswap-Ereignisobjekts. - Auf der eingehenden Seite über die Eigenschaft
PageRevealEvent.viewTransitiondespagereveal-Ereignisobjekts.
- Auf der ausgehenden Seite über die Eigenschaft
Wenn eine View-Transition durch einen startViewTransition()-Aufruf (oder eine Seitennavigation im Fall von MPA-Transitionen) ausgelöst wird, wird eine Abfolge von Schritten wie in Der View-Transition-Prozess erklärt, gefolgt. Dies erklärt auch, wann die verschiedenen Promises erfüllt werden.
Instanz-Eigenschaften
ViewTransition.finishedSchreibgeschützt-
Ein
Promise, das erfüllt wird, sobald die Transition-Animation beendet ist und die neue Seitenansicht für den Benutzer sichtbar und interaktiv ist. ViewTransition.readySchreibgeschützt-
Ein
Promise, das erfüllt wird, sobald der Pseudo-Elementbaum erstellt ist und die Transition-Animation kurz davor steht, zu beginnen. ViewTransition.updateCallbackDoneSchreibgeschützt-
Ein
Promise, das erfüllt wird, wenn das Promise erfüllt wird, das vom Callback der Methodedocument.startViewTransition()zurückgegeben wird.
Instanz-Methoden
skipTransition()-
Überspringt den Animationsteil der View-Transition, lässt aber nicht den Callback von
document.startViewTransition()aus, der das DOM aktualisiert.
Beispiele
Im folgenden SPA-Beispiel wird das ViewTransition.ready Promise verwendet, um eine benutzerdefinierte kreisförmige Enthüllungsansichtstransition auszulösen, die von der Position des Cursors des Benutzers bei einem Klick ausgeht, mit einer Animation, die von der Web Animations API bereitgestellt wird.
// Store the last click event
let lastClick;
addEventListener("click", (event) => (lastClick = event));
function spaNavigate(data) {
// Fallback for browsers that don't support this API:
if (!document.startViewTransition) {
updateTheDOMSomehow(data);
return;
}
// Get the click position, or fallback to the middle of the screen
const x = lastClick?.clientX ?? innerWidth / 2;
const y = lastClick?.clientY ?? innerHeight / 2;
// Get the distance to the furthest corner
const endRadius = Math.hypot(
Math.max(x, innerWidth - x),
Math.max(y, innerHeight - y),
);
// Create a transition:
const transition = document.startViewTransition(() => {
updateTheDOMSomehow(data);
});
// Wait for the pseudo-elements to be created:
transition.ready.then(() => {
// Animate the root's new view
document.documentElement.animate(
{
clipPath: [
`circle(0 at ${x}px ${y}px)`,
`circle(${endRadius}px at ${x}px ${y}px)`,
],
},
{
duration: 500,
easing: "ease-in",
// Specify which pseudo-element to animate
pseudoElement: "::view-transition-new(root)",
},
);
});
}
Diese Animation erfordert auch das folgende CSS, um die Standard-CSS-Animation zu deaktivieren und zu verhindern, dass die alten und neuen Ansichtsstatus in irgendeiner Weise verschmelzen (der neue Status "wischt" direkt über den alten Zustand, anstatt in ihn zu übergehen):
::view-transition-image-pair(root) {
isolation: auto;
}
::view-transition-old(root),
::view-transition-new(root) {
animation: none;
mix-blend-mode: normal;
display: block;
}
Spezifikationen
| Specification |
|---|
| CSS View Transitions Module Level 1> # viewtransition> |