Skip to main content
← πŸ“„ HTML & the platformΒ·Module A7 Β· Lesson 8
TaskAdd the view-transitions meta to the head: <meta name='view-transition' content='same-origin'>. Add CSS that names the .hero element as a view-transition-name='hero'.

View Transitions API: cross-page animations

100 XP7 min
Theory

A 2024 browser feature that feels native

The View Transitions API gives you SPA-like animations between page changes β€” without an SPA framework. Two parts:

<meta name="view-transition" content="same-origin" />

That meta tag (with content="same-origin") opts the page into cross-document view transitions. Now when the user clicks a link to another page on your site, the browser captures BEFORE and AFTER snapshots and crossfades them.

Customizing with CSS

::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 0.3s;
}

/* Pair specific elements across pages */
.hero { view-transition-name: hero; }

::view-transition-old(hero),
::view-transition-new(hero) {
  /* style the hero's specific transition */
}

Elements with matching view-transition-name are PAIRED across the transition. The browser animates between their positions/sizes (like Hero Animation in iOS).

Browser support

Chrome / Edge ship cross-document transitions. Safari has same-document support, cross-document is shipping. Firefox is behind. Use as a progressive enhancement β€” works in modern browsers, harmless in old ones.

Respect prefers-reduced-motion

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none;
  }
}
πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.