ToolPal
Mains tenant un éventail d'échantillons colorés sur fond gris, idéal pour les thèmes de design.

HEX vs RGB vs HSL : Choisir le bon format de couleur pour votre projet

📷 Tima Miroshnichenko / Pexels

HEX vs RGB vs HSL : Choisir le bon format de couleur pour votre projet

Arrêtez de copier-coller des codes couleur sans les comprendre. Apprenez la différence entre HEX, RGB et HSL pour choisir vos couleurs en toute confiance.

DPar Daniel Park9 mars 202610 min de lecture

Les codes couleur dans le développement web

Chaque couleur que vous voyez sur le web est représentée par un code. Comprendre ces codes est essentiel pour les développeurs et designers web -- pas seulement pour écrire du CSS, mais aussi pour communiquer avec les designers, déboguer les problèmes de mise en page et créer des interfaces accessibles.

Il existe trois formats de couleur principaux que vous rencontrerez quotidiennement : HEX, RGB et HSL. Chacun a ses forces et ses faiblesses, et savoir quand utiliser lequel facilitera considérablement votre travail.

Les couleurs HEX

HEX (hexadécimal) est le format de couleur le plus courant sur le web. Il existe depuis les débuts du HTML et vous le verrez partout -- dans les fichiers CSS, les outils de design comme Figma et Sketch, et les chartes graphiques.

Format : #RRGGBB

  • Chaque paire représente le Rouge, le Vert et le Bleu (0-255)
  • Les valeurs vont de 00 (0) à FF (255)
  • Le préfixe # indique au navigateur qu'il s'agit d'une couleur HEX

Exemples

  • #FF0000 = Rouge pur
  • #00FF00 = Vert pur
  • #0000FF = Bleu pur
  • #FFFFFF = Blanc
  • #000000 = Noir

Notation abrégée

Quand chaque paire a des chiffres identiques, vous pouvez abréger : #FF6633#F63

Cela fonctionne car le navigateur développe chaque chiffre en le répétant : #F63 devient #FF6633. Mais #F37A21 ne peut pas être abrégé car les chiffres de chaque paire sont différents.

HEX avec alpha (transparence)

Les navigateurs modernes supportent des codes HEX à 8 chiffres où les deux derniers contrôlent l'opacité :

color: #3B82F680;  /* Bleu à 50% d'opacité */

La valeur alpha 80 en hexadécimal équivaut à 128 en décimal, soit environ 50% du maximum 255. Quelques valeurs alpha courantes à retenir :

  • FF = 100% (totalement opaque)
  • BF = 75%
  • 80 = 50%
  • 40 = 25%
  • 00 = 0% (totalement transparent)

Les couleurs RGB

RGB signifie Rouge (Red), Vert (Green), Bleu (Blue). Il utilise des nombres décimaux (0-255) pour chaque canal, ce que beaucoup trouvent plus intuitif que la notation hexadécimale.

Format : rgb(red, green, blue)

color: rgb(59, 130, 246);    /* Bleu */
color: rgba(59, 130, 246, 0.5);  /* Bleu à 50% de transparence */

La syntaxe RGB moderne

CSS dispose d'une syntaxe plus récente qui abandonne rgba() au profit d'un simple rgb() avec un alpha optionnel :

/* Syntaxe moderne -- fonctionne dans tous les navigateurs actuels */
color: rgb(59 130 246);           /* sans virgules */
color: rgb(59 130 246 / 0.5);    /* alpha avec barre oblique */
color: rgb(59 130 246 / 50%);    /* alpha en pourcentage */

Cette syntaxe plus propre est entièrement supportée dans tous les navigateurs modernes et vaut la peine d'être adoptée si vous ne ciblez pas les systèmes hérités.

Pourquoi RGB est utile

RGB est excellent quand vous devez manipuler les couleurs par programmation. Comme chaque canal est un simple nombre de 0 à 255, il est facile d'ajuster les couleurs en JavaScript ou dans n'importe quel langage de programmation :

// Éclaircir une couleur en augmentant tous les canaux
function lighten(r, g, b, amount) {
  return [
    Math.min(255, r + amount),
    Math.min(255, g + amount),
    Math.min(255, b + amount)
  ];
}

RGB est aussi le format natif de la plupart des APIs de sélecteur de couleur et des bibliothèques de traitement d'image, ce qui évite une surcharge de conversion.

Les couleurs HSL

HSL signifie Teinte (Hue), Saturation, Luminosité (Lightness). C'est plus intuitif pour les humains car cela correspond étroitement à la façon dont nous pensons réellement aux couleurs.

Format : hsl(hue, saturation%, lightness%)

  • Teinte : 0-360 (position sur la roue chromatique)
    • 0/360 = Rouge
    • 120 = Vert
    • 240 = Bleu
  • Saturation : 0-100% (du gris au vif)
    • 0% = complètement désaturé (gris)
    • 100% = entièrement saturé (couleur vive)
  • Luminosité : 0-100% (du noir au blanc)
    • 0% = noir pur
    • 50% = la couleur pure
    • 100% = blanc pur
color: hsl(217, 91%, 60%);   /* Bleu */
color: hsl(0, 100%, 50%);    /* Rouge */
color: hsl(120, 100%, 50%);  /* Vert */

Pourquoi HSL est révolutionnaire pour les systèmes de design

La vraie puissance de HSL devient évidente quand vous devez créer des variations de couleur. Supposons que votre couleur de marque principale soit hsl(217, 91%, 60%). Construire une palette de nuances complète est trivial :

:root {
  --blue-50:  hsl(217, 91%, 97%);   /* Presque blanc */
  --blue-100: hsl(217, 91%, 93%);
  --blue-200: hsl(217, 91%, 84%);
  --blue-300: hsl(217, 91%, 72%);
  --blue-400: hsl(217, 91%, 60%);   /* Couleur de base */
  --blue-500: hsl(217, 91%, 50%);
  --blue-600: hsl(217, 91%, 40%);
  --blue-700: hsl(217, 91%, 30%);
  --blue-800: hsl(217, 91%, 20%);
  --blue-900: hsl(217, 91%, 10%);   /* Presque noir */
}

Vous gardez la même teinte et saturation, et ajustez seulement la luminosité. Le résultat est un ensemble harmonieux de nuances qui semblent aller ensemble. Essayez de faire ça avec des codes HEX -- vous auriez besoin d'une calculatrice ou d'un outil de design.

Créer des harmonies de couleurs avec HSL

Puisque la teinte est une position sur la roue chromatique (0-360 degrés), créer des harmonies de couleurs n'est qu'une question d'arithmétique :

  • Couleurs complémentaires : ajouter 180 à la teinte (hsl(217, 91%, 60%)hsl(37, 91%, 60%))
  • Triadiques : ajouter 120 et 240 (hsl(217, ...), hsl(337, ...), hsl(97, ...))
  • Analogues : ajouter/soustraire 30 (hsl(187, ...), hsl(217, ...), hsl(247, ...))

C'est l'une des raisons pour lesquelles de nombreux systèmes de design et frameworks CSS utilisent HSL en interne.

HSL avec alpha

Comme RGB, HSL supporte la transparence :

color: hsl(217, 91%, 60%, 0.5);      /* Ancienne syntaxe */
color: hsl(217 91% 60% / 50%);       /* Syntaxe moderne */

Les couleurs nommées CSS

CSS inclut également 147 couleurs nommées comme red, steelblue, papayawhip et rebeccapurple. Elles sont pratiques pour le prototypage ou les démos rapides, mais on les voit rarement dans le code de production car :

  • Elles ne sont pas flexibles (on ne peut pas facilement ajuster la luminosité ou l'opacité)
  • Les noms peuvent être trompeurs (darkgray est en réalité plus clair que gray)
  • Les couleurs de votre marque ne correspondront jamais exactement à une couleur nommée

Cela dit, transparent et currentColor sont deux valeurs nommées genuinement utiles. currentColor hérite de la couleur de texte actuelle, ce qui est pratique pour les icônes SVG et les bordures qui doivent correspondre au texte environnant.

Quand utiliser chaque format

FormatIdéal pour
HEXCouleurs en ligne rapides, la plupart du CSS, chartes graphiques
RGB/RGBAManipulation programmatique des couleurs, travail sur canvas
HSL/HSLASystèmes de design, création de palettes de nuances, thématisation

Ma recommandation pratique : utilisez HSL par défaut pour les nouveaux projets. Définissez vos couleurs de thème comme des propriétés personnalisées HSL, et vous obtiendrez une bascule facile mode clair/sombre en ajustant simplement les valeurs de luminosité. Quand vous collez des couleurs depuis des outils de design, HEX convient -- convertissez simplement en HSL pour vos variables.

Formules de conversion des couleurs

HEX vers RGB

Divisez la chaîne hexadécimale à 6 chiffres en trois paires et convertissez chacune de l'hexadécimal au décimal :

#3B82F63B = 59, 82 = 130, F6 = 246 → rgb(59, 130, 246)

RGB vers HSL

Cette conversion implique plus de mathématiques. Les étapes approximatives :

  1. Normalisez R, G, B sur 0-1 (divisez par 255)
  2. Trouvez les valeurs max et min
  3. Luminosité = (max + min) / 2
  4. Si max égale min, la saturation est 0 (gris)
  5. Sinon, calculez la saturation en fonction de la luminosité
  6. Calculez la teinte en fonction du canal qui est le maximum

Vous n'avez pas besoin de mémoriser ceci -- utilisez un outil. Mais comprendre la relation aide à déboguer les problèmes de couleur.

Erreurs courantes de couleur et comment les éviter

1. Ignorer les ratios de contraste

WCAG 2.1 exige un rapport de contraste minimum de 4.5:1 pour le texte normal et de 3:1 pour le grand texte. Ce texte gris clair sur fond blanc peut sembler élégant dans votre maquette, mais il ne respecte pas les normes d'accessibilité et est vraiment difficile à lire en plein soleil ou sur des moniteurs bon marché.

2. Utiliser du noir pur sur du blanc pur

#000000 sur #FFFFFF crée un contraste maximum (21:1), ce qui peut causer une fatigue oculaire lors d'une lecture prolongée. De nombreux systèmes de design utilisent une combinaison légèrement plus douce comme #1a1a1a sur #FAFAFA, qui passe toujours le WCAG AAA tout en étant plus reposante pour les yeux.

3. Ne pas tester les couleurs dans leur contexte

Une couleur qui semble magnifique en petit échantillon peut être écrasante quand elle est appliquée à une grande zone de fond. Testez toujours vos couleurs à l'échelle réelle -- remplissez tout un écran avec la couleur de fond et placez du vrai texte dessus avant de vous engager.

4. Trop de couleurs

Une erreur courante chez les débutants est d'utiliser trop de couleurs distinctes. La plupart des sites professionnels se limitent à 2-3 couleurs principales plus une palette neutre (gris). Si vous vous retrouvez à chercher une sixième ou septième teinte distincte, prenez du recul et simplifiez.

5. Se reposer uniquement sur la couleur

N'utilisez jamais la couleur comme seul moyen de transmettre une information. Si les messages d'erreur ne sont marqués qu'en texte rouge, les daltoniens (environ 8% des hommes) les manqueront. Associez toujours la couleur à des icônes, des motifs ou des étiquettes de texte.

Flux de travail couleur réel

Voici un flux de travail pratique qui fonctionne bien pour la plupart des projets web :

  1. Choisissez une teinte principale en HSL (par ex. hsl(217, 91%, 60%))
  2. Générez une échelle de nuances en faisant varier la luminosité de 5% à 97%
  3. Choisissez un gris neutre avec une touche de votre teinte principale (par ex. hsl(217, 10%, 50%))
  4. Générez des nuances de gris de la même façon
  5. Ajoutez des couleurs d'accentuation avec parcimonie -- une pour le succès (vert), une pour l'erreur (rouge), une pour l'avertissement (ambre)
  6. Vérifiez le contraste pour chaque combinaison texte/fond
  7. Définissez tout comme propriétés personnalisées CSS pour que le changement de thème soit indolore
:root {
  --primary: hsl(217, 91%, 60%);
  --primary-light: hsl(217, 91%, 93%);
  --primary-dark: hsl(217, 91%, 35%);
  --text: hsl(217, 15%, 15%);
  --text-muted: hsl(217, 10%, 45%);
  --surface: hsl(217, 20%, 98%);
  --error: hsl(0, 72%, 51%);
  --success: hsl(142, 71%, 45%);
}

Essayez d'ajuster la couleur ci-dessous pour voir comment la même couleur est représentée dans les formats HEX, RGB et HSL :

Try it — Color Converter

Convertissez vos couleurs maintenant

Utilisez notre Sélecteur et Convertisseur de Couleurs pour convertir instantanément entre HEX, RGB, HSL et RGBA. Vous pouvez aussi vérifier les ratios de contraste avec notre Vérificateur de Contraste de Couleurs.

Questions Fréquentes

D

À propos de l'auteur

Daniel Park

Senior frontend engineer based in Seoul. Seven years of experience building web applications at Korean SaaS companies, with a focus on developer tooling, web performance, and privacy-first architecture. Open-source contributor to the JavaScript ecosystem and founder of ToolPal.

En savoir plus

Partager

XLinkedIn

Articles associés