✨ Semaine 2 - Jour 5 : Pseudo-éléments & Transitions
📚 Objectifs du jour
Découverte des pseudo-éléments (::before, ::after) pour ajouter du contenu décoratif, et des transitions CSS pour créer des animations fluides et professionnelles.
🎭 Pseudo-éléments
::before et ::after
Injectent du contenu avant ou après un élément
.element::before {
content: '📌 ';
}
.element::after {
content: ' ✨';
}
Contenu avec décorations
Citation stylisée
.quote::before {
content: '"';
position: absolute;
font-size: 5em;
color: #3498db;
opacity: 0.3;
}
Les pseudo-éléments sont des outils puissants pour enrichir le design sans toucher au HTML.
Badge de notification
.button::after {
content: '5';
position: absolute;
top: -10px;
right: -10px;
background: #e74c3c;
border-radius: 50%;
}
Tooltip (info-bulle)
.tooltip::after {
content: attr(data-tooltip);
position: absolute;
opacity: 0;
}
.tooltip:hover::after {
opacity: 1;
}
Survolez-moi
🎬 Transitions CSS
Transition simple
.button {
transition: all 0.3s ease;
}
.button:hover {
background: #e74c3c;
transform: scale(1.1);
}
Survolez-moi pour voir la transition
Propriétés multiples
transition:
background-color 0.5s,
transform 0.3s,
box-shadow 0.4s;
Chaque propriété a sa propre durée
⏱️ Timing Functions
Courbes d'accélération (Survolez chaque box)
ease (défaut) | linear | ease-in | ease-out | ease-in-out
ease
linear
ease-in
ease-out
ease-in-out
💡 Recommandation : ease-out pour la plupart des interactions
🎨 Exemples avancés
Bouton avec effet ripple
.button::before {
content: '';
position: absolute;
background: rgba(255,255,255,0.3);
border-radius: 50%;
transition: width 0.6s, height 0.6s;
}
.button:hover::before {
width: 300px;
height: 300px;
}
Card Flip (retournement)
.card {
transform-style: preserve-3d;
transition: transform 0.6s;
}
.card:hover {
transform: rotateY(180deg);
}
FACE AVANT
FACE ARRIÈRE 🎉
Survolez la carte pour la retourner
Barre de progression animée
.progress-fill {
width: 0%;
transition: width 2s ease-out;
}
.progress-bar:hover .progress-fill {
width: 75%;
}
Survolez la barre pour l'animer
📊 Propriétés transition
Syntaxe complète
transition:
[property] /* Propriété à animer */
[duration] /* Durée (ex: 0.3s) */
[timing-function] /* Courbe (ease, linear...) */
[delay]; /* Délai (ex: 0.1s) */
/* Exemple */
transition: transform 0.3s ease-in-out 0.1s;
Propriétés animables
- ✅ color, background-color
- ✅ width, height
- ✅ margin, padding
- ✅ transform (scale, rotate, translate)
- ✅ opacity
- ✅ box-shadow, border
- ❌ display (non animable)
🎯 Best Practices
✅ Bonnes pratiques
- Utiliser transform plutôt que left/top (meilleures perfs)
- Durées : 0.2s-0.4s pour les interactions
- Préférer ease-out pour les hovers
- Tester sur appareils mobiles
- Ne pas animer trop de propriétés à la fois
- ::before/::after pour décorations seulement
❌ À éviter
- Transitions trop longues (> 0.6s)
- Animer width/height (utiliser scale)
- Trop d'animations simultanées
- Pseudo-éléments avec contenu important
- Oublier les préfixes navigateurs si besoin
- content: '' sans display ou position
Froggiesplaining :
🎯 Objectifs :
✅ Utiliser ::before et ::after pour du contenu décoratif
✅ Créer des transitions fluides avec transition
✅ Comprendre les timing functions (ease, linear, etc.)
✅ Combiner pseudo-éléments et transitions
✅ Créer des effets avancés (ripple, flip, tooltip)
📖 Points clés :
• ::before/::after nécessitent content
• transition: all 0.3s ease = syntaxe rapide
• transform est plus performant que left/top
• ease-out : démarrage rapide, fin lente
• Durée idéale : 0.2s-0.4s pour interactions
🏋️ Exercice :
Créez des boutons call-to-action avec :
• Transition au hover (couleur + élévation)
• Badge de notification avec ::after
• Effet ripple avec ::before
• Tooltip informatif