The following code snippets show key concepts used in a page transition demo. The demo uses cross-document view-transitions; a half second transition that occurs when navigating between two pages of a site. For the full demo, see the View transitions multi-page app demo.
The @view-transition
at-rule is specified in the CSS for both your current and destination documents of a navigation to opt them both in to the view transition:
@view-transition {
navigation: auto;
}
In addition to the @view-transition
at-rule, we define two @keyframe
animations and use the animation
shorthand property to apply those keyframe animations to the elements in the outbound (::view-transition-old()
) and inbound (::view-transition-new()
) pages that we want to animate.
/* Create a custom animation */
@keyframes move-out {
from {
transform: translateY(0%);
}
to {
transform: translateY(-100%);
}
}
@keyframes move-in {
from {
transform: translateY(100%);
}
to {
transform: translateY(0%);
}
}
/* Apply the custom animation to the old and new page states */
::view-transition-old(root) {
animation: 0.4s ease-in both move-out;
}
::view-transition-new(root) {
animation: 0.4s ease-in both move-in;
}
See this transitions multi-page app demo live.