Les transitions CSS vont nous permettre de modifier la valeur d’une propriété CSS de manière fluide et selon une durée que l’on va pouvoir définir. On va donc pouvoir choisir deux valeurs pour une propriété (une première de départ ou valeur par défaut et une seconde d’arrivée) et faire en sorte qu'elle change progressivement, de la valeur de départ à celle d’arrivée.
Designe le nom de la propriété qui va être affecté par la transition (ex : color, width
on peut également mettre "all" , la transition s'applique à toutes les propriétés modifiées )
Designe le nombre de secondes (ou mili-secondes) que va durer la transition
Designe le temps à attendre avant que la transition commence
Permet de choisir la vitesse de la transition au sein de celle ci. Nous allons ainsi pouvoir créer des transitions totalement linéaires ou, au contraire, en créer qui vont s’accélérer ou ralentir au milieu. Nous allons pouvoir passer les valeurs suivantes à cette propriété :
cubic-bezier(x1,y1,x2,y2) : sert à créer une transition à la vitesse totalement personnalisée en renseignant une courbe de Bézier cubique,
sans rentrer dans les détails, les deux premières valeurs correspondent aux coordonnées du premier point de contrôle, les deux autres au deuxième (les valeurs en y peuvent être négatives, voir exemple final
Le site cubic-bezier permet de générer sa propre courbe de Bezier cubique et de la comparer aux valeurs prédéfinies ci-dessous :
ease : valeur par défaut. Permet de créer une transition relativement lente au début puis qui s’accélère au milieu et qui se termine lentement,
correspond à cubic-bezier(0.25, 0.1, 0.25, 1.0)
linear : permet de créer une transition totalement linéaire c’est-à-dire qui va aller à la même vitesse du début à la fin ,
correspond à cubic-bezier(0.0, 0.0, 1.0, 1.0)
ease-in : permet de créer une transition avec un départ lent puis qui s’accélère ensuite,
correspond à cubic-bezier(0.42, 0, 1.0, 1.0)
ease-out : permet de créer une transition qui va ralentir à la fin , correspond à cubic-bezier(0, 0, 0.58, 1.0)
ease-in-out : permet de créer une transition lente au début puis qui s’accélère au milieu et qui se termine lentement. Ressemble fortement à transition-timing-function : ease mais démarre plus lentement,
correspond à cubic-bezier(0.42, 0, 0.58, 1.0)
Il est également possible d'avoir une transition saccadée :
steps(n, mot cle) : nombre positif et les mots clés start ou end,
L'animation Css est divisée en n étape(s) et elle est jouée au début de l'étape si start ou en fin si end.
step-start : L'animation Css comporte une seule étape et elle est jouée au début de l'étape,
équivalent à steps(1, start)
step-end : L'animation Css comporte une seule étape et elle est jouée à la fin de l'étape,
équivalent à steps(1, end)
Il est bien sur possible de grouper le tout avec une propriété "transition", de cette manière :
Il n'est pas obligatoire d'indiquer les 4 valeurs ( si l'on ne souhaite pas avoir un "delay" par exemple, ou si l'on veut garder la valeur par défaut pour "transition-timing-function").
Pour appliquer des transitions sur plusieurs éléments, on les sépare par une virgule :
This element is 20px wide and 20px tall but
This element is 20px wide and 20px tall but