Le cours « Couleur et contraste » est un tutoriel interactif en 17 niveaux qui apprend à lire toutes les écritures de couleur rencontrées dans une maquette ou en CSS, puis à trancher la question « ces deux couleurs peuvent-elles se lire ensemble ? » avec un critère mesurable. Chaque niveau donne un à trois sélecteurs de couleur et un objectif concret — amener la luminosité à une valeur donnée, faire dépasser 4,5:1 au contraste, trouver trois teintes espacées de 120°, rendre distinguable une paire que les daltoniens confondent. Vous tirez un curseur ou saisissez une valeur : lectures numériques, badge de contraste, roue chromatique et tableau de simulation se mettent à jour en direct, et le validateur dit ce qui cloche.
Le cours « Couleur et contraste » est un tutoriel interactif en 17 niveaux qui apprend à lire toutes les écritures de couleur rencontrées dans une maquette ou en CSS, puis à trancher la question « ces deux couleurs peuvent-elles se lire ensemble ? » avec un critère mesurable. Chaque niveau donne un à trois sélecteurs de couleur et un objectif concret — amener la luminosité à une valeur donnée, faire dépasser 4,5:1 au contraste, trouver trois teintes espacées de 120°, rendre distinguable une paire que les daltoniens confondent. Vous tirez un curseur ou saisissez une valeur : lectures numériques, badge de contraste, roue chromatique et tableau de simulation se mettent à jour en direct, et le validateur dit ce qui cloche.
Le cours se divise en quatre parties : modèles de couleur (ce que contrôlent les composantes RGB, HEX, HSL, HSV et OKLCH, et pourquoi la « luminosité » HSL n'est pas celle que perçoit l'œil) ; contraste et WCAG (la formule de luminance relative et ce que gèrent les trois seuils 4,5:1 / 3:1 / 7:1) ; harmonies (complémentaire, triadique, analogue) ; accessibilité et pratique (le monde vu par un daltonien rouge-vert, comment choisir une palette sûre, extraire les couleurs dominantes d'un logo). Le dernier niveau demande de synthétiser tout cela : livrer trois couleurs qui passent tous les contrôles.
Comptez environ 45 minutes. Pour les développeurs front-end, les designers et quiconque choisit des couleurs pour des diapositives, des graphiques ou des affiches ; aucune base artistique n'est requise.
Comment l'utiliser
01Objectif et sélecteursl'objectif du niveau est en haut de la zone d'exercice ; en dessous, un à trois sélecteurs, ceux marqués « Fixe » ne se modifient pas (une couleur de fond imposée, par exemple), les autres se choisissent au clic sur la pastille ou se saisissent directement en #RRGGBB / rgb() / hsl().
02Régler les couleurssélectionnez un sélecteur et le panneau de curseurs apparaît — trois pour RGB, trois pour HSL, ou les deux ; le panneau « Valeurs » affiche en parallèle les cinq écritures de la même couleur : HEX, RGB, HSL, HSV, OKLCH.
03Lire le retourles niveaux de contraste affichent le ratio et les badges AA / AAA, avec un aperçu en vrai texte ; les niveaux d'harmonie marquent sur la roue les positions complémentaire / triadique / analogue de la couleur courante ; les niveaux de daltonisme listent les couleurs simulées et l'écart ΔE pour quatre déficiences.
04Validerl'objectif atteint, la barre de résultat passe au vert et le niveau se coche dans le sommaire. Certains niveaux se répondent par un nombre ou un choix, le champ de réponse étant en bas de la zone interactive.
05Indices, réponses, progression« Indice » donne une piste, « Voir la réponse » affiche la valeur de référence, remplissable en un clic ; la progression est locale et survit au rechargement, et « Partager ce niveau » copie un lien avec ?lesson=n.
Le cours proprement dit est au-dessus de cette page : sélectionnez un niveau à gauche, tirez un curseur ou saisissez une valeur, le verdict s'affiche en direct.
Exemples d'entrée et de sortie
Le niveau 8, « WCAG AA : au moins 4,5:1 pour le texte courant », fixe un fond blanc et demande d'amener la couleur du texte à un contraste ≥ 4,5 sans employer un noir pur. Voici une trace d'essai :
Fond (fixe) #FFFFFF Luminance relative L = 1.000
Essai 1 #3B82F6 L = 0.228 Contraste = 1.05 / 0.278 = 3.68:1
Verdict ✓ AA grands caractères (≥ 3) ✕ AA texte courant (≥ 4.5)
Essai 2 #2563EB L = 0.153 Contraste = 1.05 / 0.203 = 5.17:1
Verdict ✓ AA grands caractères ✓ AA texte courant ✕ AAA texte courant (≥ 7) → réussi
Le niveau 15, « sûre pour daltoniens », prend l'orange #E76F51 comme référence et un vert #8AB17D comme second : en vision normale, ΔE ≈ 0.20, distinguables au premier coup d'œil ; en simulation de deutéranopie, ΔE tombe à 0.056 et les deux se confondent presque. Remplacez le second par un bleu de luminosité moyenne (par exemple #2563EB) : en simulation, ΔE repasse au-dessus de 0.15, et les deux couleurs gardent un contraste ≥ 3:1 sur fond blanc — niveau réussi.
Trois écritures d’une même couleur se convertissent entre elles, mais seule la luminance relative décide du contraste.
Fonctionnement
Niveaux 1–2 : RGB et HEX — comment un écran émet de la lumière
Chaque pixel de l'écran est composé de trois sous-pixels rouge, vert, bleu : rgb(37 99 235) donne l'intensité de chacune des trois lumières, 0 éteint, 255 au maximum. Les trois à 0 donnent le noir, les trois à 255 le blanc, et trois valeurs égales un gris. HEX est l'abréviation hexadécimale du même trio : dans #2563EB, 25 = 37, 63 = 99, EB = 235, un canal par paire ; la forme à trois chiffres comme #FFF répète chaque chiffre. Cet espace s'appelle sRGB, c'est l'espace par défaut du web et de la quasi-totalité des écrans ; entre les valeurs et l'intensité lumineuse physique s'interpose une courbe gamma, dont on se servira pour le contraste.
Niveaux 3–4 : HSL — décrire la couleur avec trois grandeurs humaines
RGB est commode pour la machine, pas pour l'humain : pour « éclaircir » un bleu, il faut toucher trois canaux à la fois. HSL change de coordonnées : la teinte H est un angle sur la roue (0° rouge, 120° vert, 240° bleu, 360° retour au rouge), la saturation S dit à quel point la couleur est « pure » (0 % gris, 100 % la plus vive), la luminosité L dit à quel point elle est claire (0 % noir, 50 % couleur pure, 100 % blanc). Éclaircir, c'est monter L ; faire un pastel, c'est baisser S et monter L — le niveau 4 vous fait en régler un. En CSS, hsl(221 83% 53%) est exactement la même couleur que #2563EB.
Niveau 5 : HSV et HSL, la différence
Le V de HSV (aussi appelé HSB) est « le maximum des trois canaux » : à V = 100 %, la couleur est la plus vive ou la plus claire, et amener S à 0 donne du blanc, non du gris. En HSL, L = 100 % est toujours blanc. Les sélecteurs des logiciels de design utilisent surtout HSV (un carré plus une barre de teinte), le CSS ne connaît que HSL ; les deux se convertissent sans perte, mais les composantes n'ont pas le même sens : ne recopiez pas les nombres HSV dans hsl().
Niveau 6 : OKLCH — pourquoi la « luminosité » HSL ment
hsl(60 100% 50%) est un jaune pur, hsl(240 100% 50%) un bleu pur, tous deux à L = 50 %, mais le jaune paraît nettement plus clair. Car HSL n'est qu'un réarrangement géométrique des valeurs RGB, sans rapport avec la perception. OKLab / OKLCH (Ottosson, 2020) est ajusté sur des données d'expériences visuelles : à L égal, la clarté perçue est la même, et les variations de C (chroma) et h (teinte) sont plus régulières. CSS Color 4 a intégré oklch() à la norme et les navigateurs principaux le prennent en charge. Le niveau 6 demande de viser, en se fiant aux seules lectures OKLCH, une clarté L entre 0,68 et 0,72 dans la zone orange — et l'on constate que le L de HSL ne correspond pas. Pour des dégradés, des échelles d'une même teinte ou garder « la même clarté » d'une teinte à l'autre, OKLCH est bien plus stable.
Niveau 7 : la formule du contraste
Le contraste défini par WCAG n'est pas la différence de deux nombres, mais un rapport de luminances relatives :
contrast=L2+0.05L1+0.05
avec L1≥L2, le 0.05 simulant la réflexion de l'éclairage ambiant. La luminance relative L s'obtient à partir des trois canaux sRGB par décodage gamma puis pondération :
Le vert pèse le plus lourd (0,7152), ce qui explique qu'un vert de même valeur numérique paraisse bien plus clair qu'un bleu ; le contraste noir-blanc plafonne à 21:1. Le niveau 7 vous fait faire le calcul à la main une fois, ensuite chaque niveau s'en charge.
Niveaux 8–10 : les trois seuils 4,5 / 3 / 7
La règle 1.4.3 de WCAG 2.2 (niveau AA) impose un contraste ≥ 4,5:1 au texte courant et ≥ 3:1 aux grands caractères (environ 24 px en normal ou 18,5 px en gras) ; la 1.4.11 impose ≥ 3:1 aux « contenus non textuels » : icônes, bordures, éléments de graphique ; la 1.4.6 (niveau AAA) porte le texte courant à ≥ 7:1. Ce ne sont pas des préférences esthétiques, mais des seuils empiriques qui laissent lire les malvoyants modérés — et la base légale de nombreuses réglementations nationales.
Le niveau 9 exige justement « dépasser 7:1 sans noir pur » : #000 sur #FFF à 21:1 ne pose aucun problème, mais de grandes surfaces de noir/blanc pur éblouissent ; en design, on prend des gris profonds comme #1A1A1A ou #24292F, qui passent 7:1 sans peine. À l'inverse, un texte de remplacement gris clair #9CA3AF sur blanc ne donne que 2,5:1 — beaucoup de sites y sont non conformes.
Niveaux 11–13 : trois relations sur la roue chromatique
La base de la théorie des harmonies, ce sont les relations d'angle entre teintes :
Complémentaire (écart de 180°) : contraste maximal, pour les boutons et les accents ; côte à côte sur de grandes surfaces, elles « se disputent », d'où un rôle principal et un secondaire.
Triadique (écart de 120°) : trois couleurs équilibrées et vivantes, fréquentes en branding et en illustration ; à l'usage, baissez la saturation de deux d'entre elles.
Analogue (voisines de 20–40°) : harmonieuse et calme, pour les fonds et la hiérarchie ; en contrepartie peu contrastée, il faut jouer sur la clarté.
La roue du cours marque ces trois positions pour la couleur courante ; le verdict ne regarde que l'écart angulaire de teinte (une petite tolérance est admise), la saturation et la luminosité restant libres — dans une vraie palette, elles comptent souvent plus que la teinte.
Niveaux 14–15 : déficiences de la vision des couleurs
Environ 8 % des hommes et 0,5 % des femmes ont une déficience de la vision des couleurs ; la plus fréquente est le daltonisme rouge-vert (protanopie : rouge manquant ; deutéranopie : vert manquant), la tritanopie (bleu-jaune) est rare, l'achromatopsie exceptionnelle. Le cours simule avec le modèle physiologique de Machado et al. (2009) : la couleur est projetée sur la réponse des cônes du sujet, puis ramenée en sRGB. Une distance euclidienne ΔE dans l'espace OKLab quantifie l'écart entre deux couleurs : en deçà d'environ 0,02 elles sont quasiment confondues, à partir de 0,15 elles se distinguent au premier regard.
Le niveau 14 demande de trouver, parmi trois paires, la plus difficile à séparer pour un deutéranope : orange #E76F51 contre vert #8AB17D, dont le ΔE ne vaut plus que 0.056 en simulation, tandis que rouge/cyan et bleu foncé/jaune restent nets grâce à un fort écart de clarté ; le niveau 15 demande de réparer la paire. Deux leviers : écarter les clartés (la déficience supprime surtout la teinte, les écarts de clarté restent toujours visibles) ou changer de teinte (rouge/vert devient bleu/orange). Sur un graphique, ajoutez si possible des formes, des textures ou des valeurs écrites : ne transmettez pas l'information par la seule couleur — c'est l'exigence WCAG 1.4.1.
Niveau 16 : extraction de la couleur de marque
L'approche naïve de l'extraction des couleurs dominantes est statistique : on quantifie chaque canal RGB en 16 niveaux (4 096 cases), on compte, on trie, on prend la moyenne des premières cases. Le cours dessine un logo d'exemple sur un canvas, sort une palette triée par proportion, et l'on peut cliquer une pastille ou prélever directement sur l'image. Les vrais outils (Vibrant.js, les couleurs dynamiques de Material You) ajoutent un clustering, écartent les quasi-blancs et quasi-noirs, pondèrent par la saturation, mais le principe reste le même.
Niveau 17 : une palette de trois couleurs qui tient debout
Le dernier niveau synthétise tout : livrer trois couleurs dont chacune garde un contraste ≥ 4,5:1 sur fond blanc (utilisables en texte courant ou en bouton), deux à deux écartées d'au moins 60° de teinte (distinguables), et dont les clartés OKLCH restent si possible proches (cohérence). Dans un vrai projet, la décision de palette se joue à peu près à l'intersection de ces trois contraintes : lisible, distinguable, cohérente.
Portée et limites
Espaces de couleur
uniquement sRGB et ses dérivés (HSL, HSV) plus OKLCH ; ni Display P3 ni Rec.2020 (gamuts larges), ni CMJN et tons directs pour l'impression.
Algorithme de contraste
formule de luminance relative de WCAG 2.x ; l'APCA perçue du brouillon WCAG 3 n'est pas couverte (plus précise, mais pas encore standard).
Simulation de daltonisme
matrices du modèle Machado 2009 pour la déficience complète (severity = 1) ; pas de simulation à degré réglable.
Verdict des harmonies
ne contrôle que les relations angulaires de teinte (petite tolérance admise), sans juger l'esthétique.
Extraction de marque
ne tourne que sur l'image d'exemple intégrée au cours, aucun envoi n'est accepté ; pour vos propres images, passez par « Outil de couleur ».
Ce qu'il ne fait pas
ne génère pas de système de palette, n'exporte pas de design tokens, ne vérifie pas la conformité d'un site entier.
Pièges courants
« même L HSL = même clarté » : faux. HSL n'a rien de perceptif : un jaune à L = 50 % est bien plus clair qu'un bleu à L = 50 % ; pour égaliser la clarté perçue, comparez le L OKLCH ou regardez le contraste.
« plus les couleurs sont éloignées, plus le contraste est fort » : le contraste ne regarde que la luminosité. Rouge pur #F00 et vert pur #0F0 ont des teintes à 120° d'écart, mais un contraste de seulement 2,9:1 — et sont presque indistinguables pour un daltonien rouge-vert.
« 4,5:1, c'est une préférence de designer » : c'est un seuil mesurable du niveau AA de WCAG 2.2, et la base de lois accessibilité dans plusieurs pays.
« la transparence n'affecte pas le contraste » : seule compte la couleur composite d'un texte semi-transparent posé sur son fond ; l'outil calcule des couleurs opaques, il faut d'abord calculer le composite.
« le daltonisme, c'est ne pas distinguer rouge et vert » : il existe aussi le bleu-jaune et l'achromatopsie ; et un daltonien rouge-vert perçoit les écarts de clarté, donc jouer sur la clarté marche toujours.
Cas d'usage typiques
Auditer les couleurs de texte d'un site ou d'une app
Saisissez les couleurs du texte et du fond de la maquette dans le sélecteur du niveau 8 : vous savez aussitôt si AA passe. Texte de remplacement, états désactivés et mentions secondaires sont les positions les plus souvent non conformes.
Graphiques et dataviz
Le tableau de simulation des niveaux 14–15 vérifie directement qu'une palette catégorielle reste découpable pour un daltonien rouge-vert ; sinon, changez de teinte ou creusez l'écart de clarté, puis ajoutez formes et étiquettes.
Décliner une couleur de marque en thème
Extrayez la couleur dominante du logo (idée du niveau 16), trouvez les accents par les relations de la roue (niveaux 11–13), puis choisissez la couleur du texte avec les niveaux de contraste : le niveau 17 est la répétition générale de ce processus.
Comprendre les nouvelles écritures CSS
Face à oklch(0.7 0.15 250), plus d'inconnu : les trois nombres sont clarté perçue, chroma et teinte, et l'on sait pourquoi les dégradés sont plus doux qu'en HSL.
FAQ
Ma couleur paraît assez sombre, mais le contraste reste sous 4,5 ?
Le contraste dépend de la luminance relative : un bleu, un violet ou un rouge saturés paraissent « sombres » alors que leur luminosité peut être élevée, et le rapport au blanc subit le terme +0.05. Regardez la valeur de contraste dans « Valeurs » et baissez progressivement le L HSL jusqu'à passer le seuil.
La réponse de référence est-elle la seule solution ?
Non. Tous les niveaux jugent sur des plages numériques (seuil de contraste, écart de teinte, seuil ΔE) : toute couleur qui remplit la condition valide le niveau.
Comment utiliser les valeurs OKLCH dans un logiciel de design ?
Les sélecteurs de Figma et Sketch restent surtout en HSB, mais le CSS accepte directement oklch() ; le panneau « Valeurs » du cours donne les cinq écritures, il suffit de copier la ligne voulue.
La simulation de daltonisme est-elle fidèle ?
Machado 2009 est l'un des modèles utilisés dans la recherche et par les outils courants (Chrome DevTools, Color Oracle) ; l'approximation est fiable pour une déficience complète. Les différences individuelles et les déficiences partielles ne tiennent pas dans une seule matrice.
La progression se synchronise-t-elle entre appareils ?
Non, elle ne vit que dans le localStorage du navigateur courant ; le lien « Partager ce niveau » permet de reprendre au même niveau ailleurs, mais l'historique des niveaux validés ne suit pas.
Confidentialité
Le cours tourne entièrement en local dans le navigateur : conversion des couleurs, contraste, simulation de daltonisme et statistique de pixels sont des calculs purs dans la page, sans requête vers un serveur ; le logo d'exemple est dessiné sur place dans un canvas, sans image externe ; la progression est conservée dans le localStorage de la machine.
Références et lectures complémentaires
W3C, Web Content Accessibility Guidelines (WCAG) 2.2, Success Criterion 1.4.3 Contrast (Minimum), 1.4.6 Contrast (Enhanced), 1.4.11 Non-text Contrast, et les définitions de relative luminance et contrast ratio dans le glossaire : https://www.w3.org/TR/WCAG22/#contrast-minimum(consulté le 2026-09-09)
W3C, CSS Color Module Level 4 — courbe gamma sRGB, définitions normatives de hsl() et oklch() et conversions entre espaces : https://www.w3.org/TR/css-color-4/(consulté le 2026-09-09)
Björn Ottosson, A perceptual color space for image processing (2020) — objectifs de conception d'OKLab et matrices de conversion : https://bottosson.github.io/posts/oklab/(consulté le 2026-09-09)
17 niveaux : signification de RGB/HEX/HSL/HSV/OKLCH, contraste WCAG, palettes complémentaire, triadique et analogue, simulation de daltonisme et extraction de couleur de marque, avec verdict en direct
Cet outil n’est pas entièrement traduit ; certains contenus utilisent la langue source ou une langue de repli.
Débutant17 niveaux · environ 45 min
–/17
Exercices de couleurs · niveau 1
RVB : mélanger trois lumières
ObjectifFaites glisser les curseurs R, V et B pour obtenir un #FF8000 orange (R=255, V=128, B=0).
Couleur
Curseur (réglage de « Couleur »)
Valeur numérique (Couleur)
HEX
#000000
RGB
rgb(0 0 0)
HSL
hsl(0 0% 0%)
HSV
hsv(0 0% 0%)
OKLCH
oklch(0.000 0.000 0.0)
Explication · RVB : mélanger trois lumières
Les écrans mélangent la lumière rouge, verte et bleue (additif) : les trois allumées sont blanches, toutes les éteintes sont noires. Chaque canal fonctionne de 0 à 255, ce qui donne 256³ ≈ 16,7 millions de couleurs. #FF8000 signifie rouge complet, vert à moitié, bleu éteint – orange. Le jugement utilise la distance perceptuelle ΔE (OKLab), vous n'avez donc pas besoin de saisir exactement chaque chiffre ; indiscernable à l’œil nu compte comme une réussite.