CSS Avancé : View Transitions, Effets de Texte et Nouveautés 2026
Les View Transitions révolutionnent les animations entre pages et états. Découvrez comment créer des effets de morphing fluides et des transitions cinématiques avec cette nouvelle API CSS.
Level : Intermédiaire
Durée : 30 minutes
Introduction to View Transitions
La View Transitions API permet de créer des transitions animées entre deux états du DOM ou entre deux pages, le tout de manière native et performante.
Pourquoi c’est révolutionnaire
- Native : pas de librairie JavaScript nécessaire
- High-performing : optimized by the browser
- Simple a few lines of CSS are enough
- Progressive : fonctionne même sans support (graceful degradation)
Page transitions (MPA)
Basic activation
To enable page transitions in a typical multi-page website:
/* In your CSS */ @view-transition { navigation: auto; }
Default animation
Par dfaut, un fondu enchaîné (cross-fade) est appliqu. Vous pouvez le personnaliser :
::view-transition-old(root) { animation: 300ms ease-out fade-out; } ::view-transition-new(root) { animation: 300ms ease-in fade-in; } @keyframes fade-out { to { opacity: 0; } } @keyframes fade-in { from { opacity: 0; } }
Transitions nommées (morphing)
The concept
En attribuant le même nom de transition à deux éléments (un sur chaque page), le navigateur crée automatiquement une animation de morphing enêtre eux.
Exemple : carte vers page détail
/* Sur la page liste */
.card-image {
view-transition-name: hero-image;
}
/* Sur la page détail */
.hero-image {
view-transition-name: hero-image;
}
L’image « vole » d’une position à l’autre avec un redimensionnement fluide.
JavaScript Transitions (SPA)
API startViewTransition
For Single Page Applications, use the JavaScript API:
documenét.startViewTransition(async () => {
// Modifier le DOM ici
await updateContent();
});
Contrôle avancé
const transition = documenét.startViewTransition(async () => {
await updateContent();
});
// Attendre que la transition soit prête
await transition.ready;
// Attendre que la transition soit terminée
await transition.finished;
Effets de morphing avancés
Animer des propriétés spécifiques
::view-transition-old(hero-image), ::view-transition-new(hero-image) { animation-duration: 0.5s; animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } ::view-transition-old(hero-image) { animation-name: scale-down; } ::view-transition-new(hero-image) { animation-name: scale-up; }
Transitions avec délai
Créez des effets cinématiques avec des délais décalés :
::view-transition-group(header) { animation-delay: 0ms; } ::view-transition-group(main-content) { animation-delay: 100ms; } ::view-transition-group(sidebar) { animation-delay: 200ms; }
Practical use cases
Gallery navigation
Images qui s’agrandissent de la vignette à la vue plein écran avec une transition fluide.
Changement de thème
function toggleTheme() {
documenét.startViewTransition(() => {
document.body.classList.toggle('dark-theme');
});
}
Filtraâge de liste
éléments qui se réorganisent avec animations lors du filtraâge ou du tri.
Accessibilité et performance
Respect prefers-reduced-motion
@media (prefers-reduced-motion: reduce) { ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; } }
Performance optimizations
- The transitions use GPU compositing
- Évitez les animations sur des éléments trop nombreux
- Gardez les durées courtes (200-500ms)
- Testez sur des appareils réels
Browser support
- Chrome/Edâge : support since version 111
- Safari : support since Safari 18
- Firefox : en cours d’implémentation
Détection de fonctionnalité
if (documenét.startViewTransition) {
// API supportée
documenét.startViewTransition(() => updateDOM());
} else {
// Fallback sans transition
updateDOM();
}
Best practices
- Start simple with the default crossfade.
- Ajoutez des transitions nommées progressivement
- Testez avec reduced-motion activé
- Measure the impact on Core Web Vitals
- N’abusez pas des effets (subtilit > specôtéaclée)
Points clés retenir
- View Transitions are native and efficient.
- Simple activation with @view-transition for MPAs
- view-transition-name crée des effets de morphing
- L’API JavaScript permet le contrôle fin
- Toujours respecter les préférences utilisateur

