Principe
Les transitions s'effectuent en trois étapes
Création de l'état initial
Création de l'état final avec l'événement qui le déclenche
Gestion de la transition
Définition : État initial
CSS initial
div {
width : 100px;
height : 100px;
background-color : red;
}
On ajoute la liste des propriétés à animer (transition-property) et la vitesse (transition-duration)
div {
width : 100px;
height : 100px;
background-color : red;
transition-property : width, background-color;
transition-duration : 3s;
}
Définition : État final
CSS final exécuté suite à un événement ( :hover, :focus, :valid, :invalid, :active, :checked, :enabled, :disabled)
div:hover {
width: 200px;
background-color: green;
}
Définition : Gestion de la transition
On ajoute la liste des propriétés à animer (transition-property) et la vitesse (transition-duration).
On peut gérer la transition de l'état initial vers l'état final en ajoutant la transition à l'état final.
La propriété transition-property indique les propriétés qui doivent évoluer.
La propriété transition-duration indique la durée de la transition.
div:hover {
width : 200px;
background-color : green;
transition-property : width, background-color;
transition-duration : 3s;
}
On peut gérer la transition de l'état final vers l'état initial en ajoutant la transition à l'état initial.
div {
width : 100px;
height : 100px;
background-color : red;
transition-property : width, background-color;
transition-duration : 3s;
}
Dans le cas particulier où seul l'état initial est créé, la transition concerne aussi l'état final.
Définition : Retard et Accélération
Ajouter un retard
div {
width : 100px;
height : 100px;
background-color : red;
transition-property : width, background-color;
transition-duration : 3s;
transition-delay : 2s;
}
Ajouter une fonction d’accélération transition-timing-function :
linear : vitesse constante
ease-in : accélère progressivement
ease-out : ralentit progressivement
ease-in-out : accélère puis ralentit
step-start : reste à l'état final toute la durée
step-end : reste à l’état initial toute la durée et saute à l'état final
steps(4, end) : exécute 4 transitions sur la durée
cubic-bezier(0.1, 0.7, 1.0, 0.1) : courbe de bezier
div {
width : 100px;
height : 100px;
background-color : red;
transition-property : width, background-color;
transition-duration : 3s;
transition-delay : 2s;
transition-timing-function: cubic-bezier(0.1, 0.6, 0.9, 0.4);
}
En raccourci :
div {
width : 100px;
height : 100px;
background-color : red;
transition: all 3s cubic-bezier(0.1, 0.6, 0.9, 0.4) 2s;
}
Combinaison :
div {
width : 100px;
height : 100px;
background-color : red;
transition: width 3s, background-color 2s 1s;
}