Ajoute du mouvement et de l'interactivité à ton CSS avec les transitions pour des changements de propriétés fluides et les animations @keyframes pour des séquences complexes. Apprends les fonctions de timing, les durées et le contrôle des animations.
Une transition te permet d'animer le changement d'une propriété CSS d'une valeur à une autre sur une durée donnée. Au lieu d'un saut brusque, la propriété interpole doucement entre les valeurs.
La propriété raccourcie transition combine quatre sous-propriétés :
.button {
transition: <property> <duration> <timing-function> <delay>;
}transition-property — Quelle propriété CSS animer (background-color, transform, all, etc.).transition-duration — Combien de temps dure la transition (0.3s, 200ms).transition-timing-function — La courbe d'accélération (ease, linear, ease-in, ease-out, ease-in-out, ou une fonction cubic-bezier()).transition-delay — Combien de temps attendre avant que la transition ne commence..button {
background-color: #6366f1;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: #4f46e5;
}Les transitions sont déclenchées par des changements d'état comme :hover, :focus, :active, ou par la modification de classes via JavaScript. Toutes les propriétés CSS ne peuvent pas être animées — seulement les propriétés avec des valeurs interpolables (couleurs, tailles, opacité, transformations).
/* Transition sur plusieurs propriétés */
.card {
background-color: #1e293b;
transform: scale(1);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
transition: transform 0.3s ease,
box-shadow 0.3s ease;
}
.card:hover {
transform: scale(1.05);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
}
/* Utiliser 'all' fait transitionner toutes les propriétés qui changent */
.link {
color: #94a3b8;
border-bottom: 2px solid transparent;
transition: all 0.2s ease-in-out;
}
.link:hover {
color: #6366f1;
border-bottom-color: #6366f1;
}Alors que les transitions animent entre deux états, les animations @keyframes te permettent de définir des séquences complexes en plusieurs étapes qui peuvent boucler, s'inverser et s'exécuter indépendamment de l'interaction utilisateur.
D'abord, définis l'animation avec @keyframes :
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}Ensuite, applique-la à un élément avec la propriété raccourcie animation :
.element {
animation: fadeIn 0.5s ease-out;
}La propriété raccourcie animation inclut :
animation-name — Le nom de la règle @keyframes.animation-duration — Combien de temps dure un cycle.animation-timing-function — La courbe d'accélération.animation-delay — Délai avant le démarrage.animation-iteration-count — Nombre de fois que l'animation doit jouer (1, 3, infinite).animation-direction — Jouer en avant (normal), en arrière (reverse), ou en alternance (alternate).animation-fill-mode — Si les styles persistent après l'animation (forwards, backwards, both).Quelle est la différence entre une transition CSS et une animation CSS ?