Sélecteurs
Sélecteurs de base
*Universel — tous les éléments
divType — tous les éléments
.classClasse — éléments avec cette classe
#idID — élément avec cet identifiant
[attr]Attribut — possède l'attribut
[attr="val"]Attribut égal à la valeur
Combinateurs
A BDescendant (toute profondeur)
A > BEnfant direct uniquement
A + BFrère adjacent (suivant)
A ~ BFrères généraux (tous après)
Pseudo-classes
:hoverSurvol de l'élément
:focusÉlément avec le focus
:first-childPremier enfant du parent
:nth-child(n)Nième enfant (base 1, odd, even, 2n+1)
:not(sel)Négation — exclure les correspondances
:has(sel)Sélecteur parent (contient une correspondance)
Pseudo-éléments
::beforeInsérer du contenu avant l'élément
::afterInsérer du contenu après l'élément
::placeholderStyliser le texte placeholder d'un champ
::selectionStyliser le texte sélectionné
Modèle de boîte
Box Sizing
/* Include padding/border in width */ *, *::before, *::after { box-sizing: border-box; }
Propriétés
marginEspace extérieur à la bordure
borderBordure autour du padding
paddingEspace intérieur à la bordure
width / heightDimensions du contenu
outlineContour extérieur (ne prend pas de place)
Raccourci
margin: 10px; /* all sides */ margin: 10px 20px; /* vertical | horizontal */ margin: 10px 20px 30px; /* top | horiz | bottom */ margin: 10px 20px 30px 40px; /* T R B L */
Flexbox
Conteneur
.flex { display: flex; justify-content: center; /* main axis */ align-items: center; /* cross axis */ gap: 1rem; }
Propriétés du conteneur
flex-directionrow | column | row-reverse | column-reverse
flex-wrapnowrap | wrap | wrap-reverse
justify-contentflex-start | center | space-between | space-around | space-evenly
align-itemsstretch | center | flex-start | flex-end | baseline
align-contentAlignement axe secondaire multi-lignes
gapEspace entre les éléments flex
Propriétés des éléments
flex: 1S'étendre pour remplir l'espace
flex: 0 0 200pxLargeur fixe, sans croissance ni rétrécissement
align-selfRemplacer align-items pour un élément
orderModifier l'ordre visuel (défaut 0)
Grid
Conteneur
.grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: auto 1fr auto; gap: 1rem; }
Propriétés du conteneur
grid-template-columnsDéfinir les colonnes : 1fr 2fr, repeat(3, 1fr)
grid-template-rowsDéfinir les lignes
grid-template-areasZones nommées : "header header" "nav main"
gapEspacement lignes et colonnes
justify-itemsAligner les éléments inline (horizontal)
align-itemsAligner les éléments block (vertical)
Placement des éléments
.item { grid-column: 1 / 3; /* span cols 1-2 */ grid-row: 1 / -1; /* span all rows */ grid-area: header; /* named area */ }
Typographie
Propriétés de police
font-familyPile de polices : 'Inter', sans-serif
font-sizeTaille : 1rem, 16px, clamp(1rem, 2vw, 2rem)
font-weightnormal (400) | bold (700) | 100-900
font-stylenormal | italic | oblique
line-heightInterligne : 1.5 (sans unité recommandé)
letter-spacingEspacement des caractères : 0.05em
Propriétés de texte
text-alignleft | center | right | justify
text-decorationnone | underline | line-through
text-transformuppercase | lowercase | capitalize
text-overflowellipsis (avec overflow: hidden)
white-spacenowrap | pre | pre-wrap
word-breakbreak-all | break-word
Couleurs & Arrière-plans
Formats de couleur
color: #ff6600; /* hex */ color: rgb(255, 102, 0); /* rgb */ color: hsl(24, 100%, 50%); /* hsl */ color: oklch(70% 0.15 50); /* oklch */
Propriétés d'arrière-plan
background-colorCouleur unie : #f0f0f0
background-imageurl(img.jpg) ou dégradé
background-sizecover | contain | 100px 200px
background-positioncenter | top right | 50% 50%
background-repeatno-repeat | repeat-x | repeat-y
Dégradés
background: linear-gradient(to right, #f00, #00f); background: radial-gradient(circle, #fff, #000); background: conic-gradient(red, yellow, green);
Transitions & Animations
Transitions
.btn { transition: background 0.3s ease, transform 0.2s; } .btn:hover { background: #0056b3; transform: scale(1.05); }
Propriétés de transition
transition-propertyQuelle propriété animer
transition-durationDurée : 0.3s, 300ms
transition-timing-functionease | linear | ease-in-out | cubic-bezier()
transition-delayDélai avant le démarrage
Animation par images clés
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .icon { animation: spin 1s linear infinite; }
Propriétés d'animation
animation-nameRéférence au nom @keyframes
animation-durationDurée d'un cycle
animation-iteration-count1 | 3 | infinite
animation-directionnormal | alternate | reverse
animation-fill-modeforwards | backwards | both
Responsive Design
Media Queries
@media (max-width: 768px) { .sidebar { display: none; } } @media (prefers-color-scheme: dark) { body { background: #1a1a1a; color: #eee; } }
Points de rupture courants
max-width: 480pxTéléphones mobiles
max-width: 768pxTablettes
max-width: 1024pxPetits laptops
max-width: 1280pxOrdinateurs de bureau
Unités de viewport
vw / vh% de la largeur / hauteur du viewport
dvhHauteur dynamique du viewport (mobile)
svh / lvhPetite / grande hauteur du viewport
cqiTaille inline de la container query
Container Queries
.card-wrapper { container-type: inline-size; } @container (min-width: 400px) { .card { flex-direction: row; } }
Positionnement
Valeurs de position
staticDéfaut — flux normal du document
relativeDécalé de sa position normale ; conserve l'espace
absolutePositionné par rapport au parent positionné
fixedPositionné par rapport au viewport ; reste au scroll
stickyAlterne relative/fixe selon le scroll
Patterns de centrage
/* Flex center */ display: flex; justify-content: center; align-items: center; /* Grid center */ display: grid; place-items: center;
Empilement
z-indexOrdre d'empilement (plus élevé = au-dessus) ; nécessite position
isolation: isolateCrée un nouveau contexte d'empilement
Propriétés personnalisées
Définir & Utiliser
:root { --color-primary: #3b82f6; --spacing-md: 1rem; } .btn { background: var(--color-primary); padding: var(--spacing-md); }
Valeurs de repli
color: var(--accent, #ff6600); /* uses #ff6600 if --accent is not defined */
Thématisation dynamique
[data-theme="dark"] { --bg: #1a1a2e; --text: #e0e0e0; } body { background: var(--bg); color: var(--text); }