edubun
Français

Mettre en forme une petite page

La page de la boulangerie du cours HTML reçoit ses couleurs, ses espacements et sa mise en page d'environ 40 lignes de CSS, sans que le HTML change du tout.

Commencer par des choix, pas par des règles

Avant d'écrire des règles, fais quelques choix : une couleur d'accent, une couleur de texte et un fond assez contrastés, une liste de polices, une taille de base, et un pas d'espacement qui se répète partout (par exemple 8, 16 et 24 pixels). Une page qui réutilise quelques valeurs paraît calme et réfléchie ; une page où chaque boîte a sa propre marge légèrement différente paraît brouillonne, même si personne ne sait dire pourquoi. CSS a une fonctionnalité faite pour cela : les propriétés personnalisées.

Les propriétés personnalisées

Une propriété personnalisée est un nom que tu inventes, qui commence par deux tirets et contient une valeur : --accent: #1a5fb4;. Définis tes choix une seule fois sur :root, qui est l'élément html, et utilise-les partout avec var() : background: var(--accent);. Les propriétés personnalisées sont héritées comme les propriétés de texte : chaque élément peut donc lire celles définies sur la racine. Changer la couleur d'accent de tout le site revient alors à modifier une seule ligne. Tu peux aussi redéfinir une propriété dans une media query, par exemple pour changer de couleurs avec prefers-color-scheme: dark.

:root {
  --accent: #1a5fb4;     /* 6.29:1 on white */
  --ink: #222;
  --paper: #fffdf8;
  --space: 16px;
}
body {
  margin: 0;
  font-family: system-ui, sans-serif;
  line-height: 1.6;
  color: var(--ink);
  background: var(--paper);
}
header { display: flex; justify-content: space-between; align-items: center;
         flex-wrap: wrap; gap: var(--space); padding: var(--space); }
nav ul { display: flex; gap: var(--space); list-style: none; margin: 0; padding: 0; }
main { max-width: 60rem; margin: 0 auto; padding: var(--space); }
.cards { display: grid; gap: var(--space);
         grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.card { padding: var(--space); border: 1px solid #ddd; border-radius: 8px; }
img { max-width: 100%; height: auto; }
.btn { background: var(--accent); color: white; border: 0;
       padding: 8px var(--space); border-radius: 6px; font: inherit; }
.btn:hover { background: #154c90; }
.btn:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
Une petite feuille de style complète pour la page de la boulangerie. #154c90 est une nuance un peu plus foncée de la couleur d'accent.

Lire la feuille de style de haut en bas

La feuille de style ci-dessus utilise quelque chose de presque chaque unité. La racine contient les choix. body règle une seule fois la police, l'interligne et les couleurs, et l'héritage les transmet à chaque paragraphe. L'en-tête est une ligne flex qui passe à la ligne : sur un téléphone étroit, le menu descend sous le nom au lieu d'être écrasé. main a une max-width et margin: 0 auto, ce qui garde des lignes lisibles et centre le contenu sur les grands écrans. Les cartes utilisent le motif de grille auto-fill : elles passent d'une colonne à plusieurs sans media query, et les images sont fluides. Le bouton reçoit une couleur au survol et, tout aussi important, un contour de focus visible pour les utilisateurs du clavier.

Vérifier sur de vrais écrans

Tester du CSS, c'est regarder. Ouvre la page dans une fenêtre étroite (320 pixels pour le contrôle de redistribution des WCAG) et dans une fenêtre large, et cherche le défilement horizontal et le texte qui touche les bords. Zoome à 200 pour cent. Parcours la page avec Tab et vérifie que tu vois toujours où se trouve le focus. Vérifie le contraste du texte et des boutons dans les outils de développement. Active le mode sombre ou le réglage de réduction des animations de ton système si tu as prévu des styles pour eux. Les outils de développement du navigateur permettent de changer n'importe quelle valeur en direct et de voir le modèle de boîte de n'importe quel élément : c'est le moyen le plus rapide de comprendre pourquoi quelque chose se trouve là où il est.

À partir de là, les mêmes briques s'appliquent à n'importe quel site. Les projets plus importants découpent la feuille de style en fichiers, nomment les classes d'après ce qu'est un composant (carte, bouton, en-tête du site) et gardent une courte liste de propriétés personnalisées partagées, mais les règles de fond sont celles de ces neuf unités.

propriété personnalisée--nom: valeur; lue avec var(--nom)
:rootL'élément html ; là où vivent les valeurs partagées
var()Utilise la valeur d'une propriété personnalisée
:hoverPointeur au-dessus de l'élément
:focus-visibleFocus clavier visible ; ne jamais le laisser sans style après avoir retiré le contour
échelle d'espacementQuelques valeurs d'espacement répétées, comme 8, 16, 24
  1. Par quoi commence le nom d'une propriété personnalisée ?
    • Deux tirets
    • Un signe dollar
    • Une arobase
  2. Comment utilises-tu la valeur de --accent ?
    • var(--accent)
    • get(--accent)
    • $accent
  3. Pourquoi définir les valeurs partagées sur :root ?
    • Les propriétés personnalisées sont héritées, donc chaque élément peut les lire
    • Seul :root accepte les propriétés personnalisées
    • Cela les rend plus rapides
  4. Quel est le rapport de contraste de #1a5fb4 sur fond blanc, arrondi à deux décimales ?
  5. Pourquoi l'en-tête utilise-t-il flex-wrap: wrap ?
    • Sur les écrans étroits, le menu passe sous le nom au lieu d'être écrasé
    • Pour masquer le menu
    • Pour mettre le texte en gras
  6. Que doit toujours avoir un bouton pour les utilisateurs du clavier ?
    • Un style de focus visible
    • Une animation au survol
    • Une ombre
  7. Quelle mise en page permet aux cartes de passer d'une colonne à plusieurs sans media query ?
    • repeat(auto-fill, minmax(180px, 1fr))
    • grid-template-columns: 180px
    • display: block
  8. --space vaut 16px. Combien de pixels fait calc(var(--space) * 1.5) ?
  9. Pourquoi réutiliser partout quelques valeurs d'espacement ?
    • La page paraît cohérente et est plus facile à modifier
    • Les navigateurs l'exigent
    • Cela améliore le contraste
L'essentiel
  • Choisis d'abord les couleurs, les polices et une échelle d'espacement ; range-les dans des propriétés personnalisées sur :root.
  • body règle une seule fois les styles de texte ; flex pour l'en-tête, grid pour les cartes, images fluides.
  • Teste à 320px, avec un zoom à 200 %, avec Tab et dans les outils de développement.
Sources de ce cours (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

Consulté le: 2026-10-17