Débutant25 min de lecture

Transitions & Animations

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.

Transitions CSS

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 :

css
.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.
css
.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).

Transitions Multi-Propriétés

css
/* 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;
}

Animations @keyframes

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 :

css
@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 :

css
.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 ?

Prêt à pratiquer ?

Crée ton compte gratuit pour accéder à l'éditeur de code interactif, lancer les défis et suivre ta progression.