Principe
Les animations s'effectuent en deux étapes
Création de la fonction
Affectation de la fonction et gestion de sa durée et de sa vitesse.
Définition : Création de la fonction
La règle @keyframes permet de déclarer une fonction
@keyframes animation {
}
On donne l'état initial et l'état final
@keyframes animation {
from {
background-color: red;
}
to {
background-color: green;
transform: translate(300px);
}
}
On peut donner des états intermédiaires
@keyframes animation {
from {
background-color: red;
}
50% {
background-color: blue;
}
to {
background-color: green;
transform: translate(300px);
}
}
Définition : Affectation de la fonction
On précise le nom de la fonction à lancer sur notre sélecteur.
div {
animation-name: animation;
}
Durée de l'animation.
div:hover {
animation-name: animation;
animation-duration: 3s;
}
Dans notre exemple l'animation est lancée au survol du bloc.
Définition : Répétition, retour, accélération et retard
Répétition : animation-iteration-count
infinite
nombre (0, 1, 2.5, 3.4...)
div {
animation-name: animation;
animation-duration: 3s;
animation-iteration-count: infinite;
}
Dans notre exemple l'animation est lancée immédiatement et à l'infini.
Retour : animation-direction
alternate : les itérations alternent dans un sens puis dans l'autre
reverse : les animations vont de l'état final vers l'état initial
alternate-reverse : les itérations alternent en commençant en sens inverse
normal : animation par défaut.
div {
animation-name: animation;
animation-duration: 3s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Accélération : animation-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 {
animation-name: animation;
animation-duration: 3s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
}
Retard : animation-delay
Ajoute un retard au démarrage
div {
animation-name: animation;
animation-duration: 3s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
animation-delay: 2s;
}
Fin : animation-fill-mode
Indique comment les valeurs CSS sont appliquées à la fin d'une animation.
forwards : l’élément gardera les dernières valeurs calculées de CSS
backwards : l'élément reviendra à ses valeurs CSS d'origines.
Définition : Simplification
Le code peut se simplifier avec la propriété animation :
div {
animation: animation 3s ease-in-out 2s infinite alternate;
}
Définition : Plusieurs animations
On peut lancer plusieurs animations sur le même élément.
div {
animation: animation1 3s, animation2 2s, animation3 4s;
}