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 einen aktiven View-Übergang und bietet Funktionalitäten, um auf das Erreichen verschiedener Zustände des Übergangs zu reagieren (z. B. bereit für die Ausführung der Animation oder Animation abgeschlossen) oder den Übergang ganz zu überspringen.
Dieser Objekttyp ist auf folgende Weise verfügbar:
- Über die
Document.activeViewTransition-Eigenschaft. Dies bietet eine konsistente Möglichkeit, in jedem Kontext auf den aktiven View-Übergang zuzugreifen, ohne sich später um das Speichern für einfachen Zugriff kümmern zu müssen. - Im Falle von Übergängen im selben Dokument (SPA) wird er auch durch die Methode
document.startViewTransition()zurückgegeben. - Im Falle von Dokumenten-übergreifenden Übergängen (MPA) ist er ebenfalls verfügbar:
- Auf der ausgehenden Seite über die
pageswap-EreignisobjekteigenschaftPageSwapEvent.viewTransition. - Auf der eingehenden Seite über die
pagereveal-EreignisobjekteigenschaftPageRevealEvent.viewTransition.
- Auf der ausgehenden Seite über die
Wenn ein View-Übergang durch einen startViewTransition()-Aufruf ausgelöst wird (oder eine Seitennavigation im Falle von MPA-Übergängen), wird eine Abfolge von Schritten befolgt, wie in Der View-Übergangsprozess erklärt wird. Dies erklärt auch, wann die verschiedenen Versprechungen erfüllt werden.
Instanz-Eigenschaften
ViewTransition.finishedSchreibgeschützt-
Ein
Promise, das erfüllt wird, sobald die Übergangsanimation abgeschlossen 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-Element-Baum erstellt ist und die Übergangsanimation kurz vor dem Start steht. ViewTransition.typesSchreibgeschützt-
Ein
ViewTransitionTypeSet, das Zugriff und Modifikation der auf den View-Übergang gesetzten Typen ermöglicht. ViewTransition.updateCallbackDoneSchreibgeschützt-
Ein
Promise, das erfüllt wird, wenn das Promise, das von demdocument.startViewTransition()-Methoden-Callback zurückgegeben wird, erfüllt wird.
Instanz-Methoden
skipTransition()-
Überspringt den Animationsteil des View-Übergangs, ohne das Ausführen des
document.startViewTransition()-Callbacks zu überspringen, das das DOM aktualisiert.
Beispiele
Im folgenden SPA-Beispiel wird das ViewTransition.ready-Promise verwendet, um einen benutzerdefinierten kreisförmigen Offenbarungs-View-Übergang ausgehend von der Position des Benutzer-Cursors bei Klick auszulösen, mit Animation bereitgestellt durch die Web Animations API.
// 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 standardmäßige CSS-Animation auszuschalten und zu verhindern, dass die alten und neuen Zustände der Ansicht auf irgendeine Weise vermischt werden (der neue Zustand "wischt" direkt über den alten Zustand, anstatt überzuleiten):
::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 |