Les pseudo-éléments relatifs aux transitions d'affichage
Résumé des caractéristiques de la directive @view-transition
Description des pseudo-éléments relatifs aux transitions d'affichage (view Transitions).
Rappel : les transitions d'affichage permettent d'animer les changements qui se font sur la page : insertion, remplacement ou suppression d'éléments, application d'une transformation ou d'un filtre graphique, etc. Une présentation très détaillée des transitions d'affichage est consultable sur la page sur les transitions d'affichage.

Exemple sans transition d'affichage
Cliquez sur l'image

Exemple avec une transition d'affichage
Cliquez sur l'image
Lors d'une transition d'affichage, le navigateur effectue les opérations suivantes :
- Création d'une copie de l'écran avant sa modification.
- Réalisation des modifications sur le document.
- Création d'une copie d'écran une fois les modifications terminées.
- Réalisation d'une animation pour passer progressivement de la première copie d'écran à la deuxième.
Plusieurs pseudo-éléments peuvent être utilisés pour cibler les éléments impactés par la transition d'affichage, et pendant le temps de cette transition. Lorsque cette dernière est terminée, ces sélecteurs ne ciblent plus rien.
::view-transition-old(): cible la copie d'écran avant modification.::view-transition-new(): cible la copie d'écran après les modifications.::view-transition-image-pair(): cible les deux copies d'écran. Ce pseudo-élément n'est pas vraiment utile pour l'auteur des styles, mais il facilite la travail du navigateur en ajoutant un niveau d'isolation : le mélange des images se fait entre les deux copies d'écran, sans interagir avec le reste de la page.::view-transition-group(): cible le parent des éléments précédents.@view-transition: cible la racine de l'arbre construit pour la transition d'affichage.
Les pseudo-éléments qui comportent des parenthèses attendent un identifiant en paramètre. Cet identifiant est défini par la propriété view-transition-name.
A défaut, l'identifiant est root qui signifie que l'animation concerne toute la page.
Le navigateur construit un arbre spécifique aux objets impactés par la transition d'affichage, et totalement distinct du DOM de la page.
Ces objets n'existent que pendant la durée de la transition.
root est un identifiant prédéfini qui indique que la transition s'applique à toute la page.
id est un identifiant défini par la propriété view-transition-name sur un des éléments de la page.
::view-transition
│
├─::view-transition-group(root)
│ │
│ └─::view-transition-image-pair(root)
│ │
│ ├──::view-transition-old(root)
│ │
│ └──::view-transition-new(root)
│
└─::view-transition-group(id)
│
└─::view-transition-image-pair(id)
│
├──::view-transition-old(id)
│
└──::view-transition-new(id)
Exemple d'un code complet (Javascript et CSS).
/* Code Javascript pour déclencher la transition */
script id="tutorial1-js"
function demoVT(el) {
if (document.startViewTransition) {
document.startViewTransition({update:() => demo(el)});
}
else {
alert('Votre navigateur ne traite pas les transitions d\'affichage.');
}
}
function demo(el) {
if(el.src.indexOf('-1.jpg')==-1) {
el.src='img/view-transition-1.jpg';
}
else {
el.src='img/view-transition-2.jpg';
}
}
/script
style
/* Définition des animations */
@keyframes fondu-old {
from {opacity:1;}
to {opacity:0;}
}
@keyframes fondu-new {
from {opacity:0;}
to {opacity:1;}
}
/* Création d'un identifiant pour la transition */
/* Cet identifiant est associé à l'image dont l'ID est 'description1b') */
#description1b {view-transition-name:demo1;}
/* Application des animations aux copies d'écran générées pour la transition */
::view-transition-old(demo1) {
animation:fondu-old 2s;
}
::view-transition-new(demo1) {
animation:fondu-new 2s;
}
/style
Autres pages en rapport avec les transitions d'affichage.
Prise en charge par les navigateurs (compatibilité).
sur une même page
d'un document à l'autre
::view-transition...Navigateurs sur ordinateurs :
Navigateurs sur mobiles :
Navigateurs obsolètes ou marginaux :

Internet Explorer

UC Browser pour Androïd

Opéra Mobile

QQ Browser

Baidu Browser

Safari

Samsung Internet

Chrome

Edge

Firefox

Opéra

Chrome pour Androïd

Safari sur IOS

Androïd Brower

Firefox pour Androïd

KaiOS Browser

Opéra mini
Évolution des pseudo-éléments relatifs aux transitions d'affichage.
Le niveau 1 de la spécification permet les transitions d'affichage au sein de la page (pas d'une page à l'autre). Tous les pseudo-éléments décrits ici étaient déjà définis dans ce niveau 1.
-
Module CSS - Transitions d'afichage - Niveau 1
Première présentation des transitions d'affichage.
Et définition des pseudo-éléments qui s'y rattachent.25 Octobre 2022Document de travail.05 Septembre 2023Candidat à la recommandation. -
Module CSS - Transitions d'afichage - Niveau 2
Le niveau 2 de la spécification permet les transitions d'affichage entre les pages.
Mais cela n'impacte pas les pseudo-éléments déjà existants.16 Mai 2024Document de travail.
Voir aussi, au sujet des transitions d'affichage.



