Essayer de coder ← Retour aux sujets

Couleurs et fonds

color · background

color colore le texte, background le fond. Une même couleur s'écrit de plusieurs façons équivalentes.

color: royalblue;
Nom de couleur (environ 140 noms connus)
color: #2563eb;
Hexadécimal #rrggbb : rouge, vert, bleu
color: rgb(37 99 235);
Rouge, vert, bleu, de 0 à 255
color: hsl(221 83% 53%);
Teinte (0 à 360°), saturation, luminosité
background: rgb(0 0 0 / 40%);
Couleur semi-transparente (canal alpha)
background: linear-gradient(90deg, #ef4a34, #f59e0b);
Dégradé de gauche à droite
couleurs.css
.titre {
  color: #14141a;
  background-color: #f7f2ea;
}

.bandeau {
  background: linear-gradient(90deg, #ef4a34, #f59e0b);
  color: white;
}

.voile {
  background: rgb(0 0 0 / 40%);
}
Rendu
Un titre presque noir sur fond crème, un bandeau dégradé du rouge-orangé à l'ambre avec un texte blanc, et un voile noir transparent à 40 %.

Texte et polices

font · text

La typographie fait une grande part de la lisibilité. On règle la police, la taille, l'interligne et l'alignement.

font-family: "Manrope", system-ui, sans-serif;
Liste de polices : la première disponible est utilisée
font-size: 1rem;
Taille (rem = taille de base du navigateur)
font-weight: 700;
Graisse : 400 normal, 700 gras
line-height: 1.5;
Interligne (nombre sans unité)
text-align: center;
Alignement du texte
text-decoration: underline;
Soulignement (ou none, line-through)
text-transform: uppercase;
Met en majuscules sans changer le HTML
texte.css
body {
  font-family: system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.6;
  color: #14141a;
}

h1 {
  font-size: 2rem;
  font-weight: 800;
  letter-spacing: -0.02em;
}

.legende {
  font-size: 0.875rem;
  font-style: italic;
  text-align: center;
  color: #4a4a52;
}

🎨 Le cours : couleurs, tailles et typographie

Couleur et typographie sont les deux premiers leviers du style. Les bien régler suffit à transformer une page brute en page lisible. Cette fiche couvre les formats de couleur, les unités de taille, les polices et la mise en forme du texte.

Les formats de couleur

FormatExemple (le même bleu)À retenir
nomroyalbluepratique pour essayer, mais peu de choix
hexadécimal#4169e1trois paires de chiffres hexa : rouge, vert, bleu (#rgb est un raccourci : #f80 = #ff8800)
rgb()rgb(65 105 225)trois nombres de 0 à 255
hsl()hsl(225 73% 57%)teinte, saturation, luminosité : le plus intuitif pour éclaircir ou assombrir

Le code hexadécimal est de la numération en base 16 vue dans Hexadécimal et tailles : #ef4a34 est le rouge ef (239), le vert 4a (74) et le bleu 34 (52). Chaque canal tient sur un octet, soit 256 niveaux, d'où 256 × 256 × 256 = 16,7 millions de couleurs.

Transparence et opacité

Un quatrième nombre donne la transparence (alpha) : rgb(0 0 0 / 40%), #00000066, hsl(0 0% 0% / 0.4). Ne le confonds pas avec la propriété opacity, qui rend transparent tout l'élément, texte et enfants compris : pour un fond translucide sous un texte net, utilise un alpha dans background.

Fonds : couleur, image, dégradé

background-color pose une couleur, background-image une image (url(…)) ou un dégradé (linear-gradient, radial-gradient). background-size: cover remplit la zone en recadrant ; contain montre toute l'image. background-position: center la centre.

fond.css
.hero {
  background-color: #14141a;
  background-image: url("images/fond.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

Les unités de taille

UnitéSignificationQuand l'employer
pxpixel CSS, taille fixebordures fines, ombres
remmultiple de la taille de police de la page (16 px par défaut)tailles de texte et espacements : respecte les réglages de l'utilisateur
emmultiple de la taille de police de l'élémentespacements qui suivent la taille du texte (boutons)
%pourcentage de l'élément parentlargeurs fluides
vw vh1 % de la largeur / hauteur de la fenêtresections plein écran
chlargeur du caractère « 0 »longueur de ligne de texte

Choisir et charger une police

font-family accepte une liste : si la première police n'est pas disponible, le navigateur essaie la suivante, et la dernière est une famille générique (serif, sans-serif, monospace, system-ui). Mets entre guillemets les noms de plus d'un mot ("Open Sans"). Pour utiliser une police absente de l'ordinateur, on la charge avec @font-face (ou un lien vers un service de polices) ; font-display: swap affiche un texte de secours en attendant.

police.css
@font-face {
  font-family: "MaPolice";
  src: url("fonts/ma-police.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}

body {
  font-family: "MaPolice", system-ui, sans-serif;
}

Mettre en forme le texte

PropriétéEffetValeurs courantes
text-alignalignement horizontalleft, center, right, justify
line-heightinterligne1.4 à 1.7 pour un texte courant (sans unité)
letter-spacingespace entre les lettres0.05em, -0.02em
text-decorationsoulignement, barrénone, underline, line-through
text-transformcasseuppercase, lowercase, capitalize
text-shadowombre du texte1px 1px 2px rgb(0 0 0 / 30%)
text-indentretrait de première ligne1.5em

Pour couper un titre trop long avec des points de suspension :

ellipse.css
.titre-long {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

Lisibilité : contraste et longueur de ligne

  • Contraste : au moins 4,5:1 entre texte et fond pour un texte courant (voir Accessibilité). Un gris clair sur blanc échoue presque toujours.
  • Longueur de ligne : 45 à 75 caractères est le confort de lecture. max-width: 65ch le garantit.
  • Interligne : 1,4 à 1,7 pour un texte courant, plus serré pour les titres.
lecture.css
article {
  max-width: 65ch;
  margin-inline: auto;
  line-height: 1.6;
}

⚠️ Erreurs fréquentes

Un texte gris clair sur fond blanc

À éviter
faux.css
.note { color: #b8b8b8; }   /* contraste d'environ 2:1 : illisible */
Correct
correct.css
.note { color: #4a4a52; }   /* contraste d'environ 9:1 */

Utiliser opacity pour un fond translucide

À éviter
faux.css
.carte { background: black; opacity: 0.4; }   /* le texte devient transparent aussi */
Correct
correct.css
.carte { background: rgb(0 0 0 / 40%); }    /* seul le fond est transparent */

Fixer des tailles de texte en px partout

Un utilisateur qui a réglé une grande police dans son navigateur n'est pas respecté avec px. Préfère rem pour les textes et les espacements.

Un interligne en pixels

À éviter
faux.css
p { line-height: 20px; }   /* ne suit plus la taille du texte */
Correct
correct.css
p { line-height: 1.5; }    /* 1,5 fois la taille du texte */

Un code hexadécimal de longueur incorrecte

Seuls 3, 4, 6 ou 8 chiffres sont valides (#f80, #f80a, #ff8800, #ff8800aa). #12345 est ignoré sans message.

Compter sur une police rare sans solution de repli

Une police installée sur ton ordinateur n'existe peut-être pas chez le visiteur. Termine toujours la liste par une famille générique : font-family: "Ma Police", sans-serif;.

📋 Aide-mémoire

  • Couleur : nom, #rrggbb, rgb(r g b), hsl(h s l) ; alpha : rgb(0 0 0 / 40%) ; opacity rend tout l'élément translucide.
  • Fond : background-color, background-image: url(…) ou linear-gradient(…), background-size: cover.
  • Unités : rem pour le texte et les espaces, % et vw pour la fluidité, px pour les détails fins, ch pour les lignes.
  • font-family : liste terminée par sans-serif / serif / monospace ; @font-face pour charger une police.
  • Texte : line-height: 1.5 (sans unité), text-align, text-transform, text-decoration, max-width: 65ch.
  • Contraste d'au moins 4,5:1 pour le texte courant.