Les transitions permettent de passer d'un état A à un état B d'une façon élégante.
Définis la ou les propriété(s) affectées par une transition.
On peut utiliser la valeur all pour appliquer une transition à toutes les propriétés compatibles avec l'effet de transition.
Il est aussi possible de spécifier un certain nombre de propriétés en les séparant par une virgule.
Par exemple:
ERREUR FRÉQUENTE
Ce ne sont pas toutes les propriétés qui sont compatibles avec l'effet de transition. Par exemple, display ou background-image ne peut pas effectuer de transition. Voir la liste MDN des propriétés capable d’effectuer une transition.
Essentiellement, toute propriété acceptant des valeurs numériques ou de couleur peut faire l'objet d'une transition.
Définis la durée de la transition. Ce nombre peut-être en seconde ou en milliseconde. 1s = 1000ms.
Par exemple, au survol nous avons trois fois la même transition, mais avec des durées différentes:
- 0.5 seconde
- 1 seconde
- 1.5 secondes
Dicte le rythme de la transition. Par exemple, dans la transition précédente on remarque que chaque carré accélère progressivement avant de ralentir ensuite. Ce rythme est appelé ease et est celui par défaut des transitions.
L'exemple suivant contient six fois la même transition au survol, mais avec des rythmes différents.
- linear n'accélère ou ne ralentis jamais ↗️
- ease accélère progressivement et ralentis en fin de parcours (Comportement par défaut)
- ease-in-out commence lentement et ralentis en fin de parcours.
- ease-in commence lentement ⤴️
- ease-out ralentis en fin de parcours ⤵️
- cubic-bezier Rythme personnalisable via une courbe de Bézier.
La propriété transition-delay définit le temps d'attente avant le début d'une transition. Par défaut, sa valeur est 0s, ce qui signifie que la transition démarre immédiatement. Si une valeur négative est spécifiée, la transition commencera comme si ce laps de temps s'était déjà écoulé. L'animation démarera donc à quelque part au milieu de sa course.
Par exemple au survol:
- Aucun délai
- Délais de 0.25s
- Délais de -0.25s (commence au milieu de l'animation)
Afin de simplifier l'écriture des transitions, il est possible de regrouper toutes les précédentes propriétés en une seule comme le font les propriétés margin et padding avec top, right, bottom et left.
Pour ce faire, il suffit d'appeler la propriété transition et de lui passer au minimum deux valeurs:
- La ou les propriétés à transitionner
- La durée de la transition
Par exemple:
Pourrait devenir:
Il est aussi possible de spécifier les autres propriétés si désiré en les ajoutant à la suite.
Par exemple, pour avoir un délai de 0.5s et une transition linéaire:
Si les propriétés d'une transition sont définies sur un état en particulier, par exemple :hover, et non à sa base, cette propriété ne s'appliquera que lorsque cet état sera activé. Par exemple, à gauche la durée de la transition est appliquée sur l'élément de base. Le navigateur applique donc le transition-duration en tout temps sur l'élément, qu'il soit survolé ou non. Tandis qu'à droite, le transition-duration est défini sur le :hover uniquement, donc la transition ne s'effectue qu'au survol. Dès que l'élément n'est plus survolé, il retourne abruptement à sa position de départ.
À droite, transition sur l’élément survolé seulement.