CSS • Page 6 / Effets & animations

Hover, transitions & animations

Maintenant que tu maîtrises la base du CSS, on va ajouter de la vie à tes pages : effets au survol (hover), transitions fluides, petites animations.

1. Pseudo-classe :hover

:hover permet de changer le style d’un élément quand la souris passe dessus. Très utilisé pour les liens, boutons, cartes, etc.

a {
  color: #4f8bff;
}

a:hover {
  color: #ff5c7a;
}

Exemple de bouton avec hover :

Je suis un bouton avec :hover

Que signifie .btn:hover en CSS ?

2. Transitions : rendre les changements fluides

Sans transition, les changements CSS sont instantanés. Avec transition, ils deviennent animés.

.carte {
  background-color: #050814;
  transform: scale(1);
  transition: background-color 0.3s ease, transform 0.3s ease;
}

.carte:hover {
  background-color: #4f8bff;
  transform: scale(1.05);
}
Tu peux aussi utiliser transition: all 0.3s ease; pour animer toutes les propriétés modifiées, mais il vaut mieux cibler seulement celles dont tu as besoin.

Où faut-il déclarer transition ?

3. Mini labo : boîte avec transition

Passe la souris sur la boîte pour voir la transition. Tu peux changer la durée et voir la différence.

Survole-moi

4. transform : déplacer, zoomer, tourner

La propriété transform permet de transformer un élément :

.carte:hover {
  transform: translateY(-5px) scale(1.05);
}

Quelle fonction de transform sert à agrandir/réduire un élément ?

5. Animations avec @keyframes

Pour créer une vraie animation (qui ne dépend pas du hover), on utilise @keyframes + la propriété animation.

@keyframes clignote {
  0%   { opacity: 1; }
  50%  { opacity: 0.3; }
  100% { opacity: 1; }
}

.alerte {
  animation: clignote 1s infinite;
}

Exemple de bouton animé :

Nouveau !

Quelle règle utilise-t-on pour définir les étapes d'une animation CSS ?

6. Mini-projet : bouton animé & cartes interactives

Crée une page effets.html + un fichier effets.css avec :

.btn-principal {
  display: inline-block;
  padding: 10px 18px;
  border-radius: 999px;
  background-color: #4f8bff;
  color: #fff;
  text-decoration: none;
  transition: background-color 0.25s ease, transform 0.25s ease;
}

.btn-principal:hover {
  background-color: #ff5c7a;
  transform: translateY(-2px) scale(1.03);
}
Avec HTML + CSS + ce que tu viens de voir, tu peux déjà faire des interfaces très propres pour des sites, panels RP, dashboards, etc.