Guide des palettes et combinaisons de couleurs : de la théorie des couleurs à la combinaison professionnelle d'UI en pratique

Outils de développement

Fondements de la théorie des couleurs

Modèle de couleur HSL

H (Hue) Teinte : 0-360°, angle sur le cercle chromatique
S (Saturation) Saturation : 0-100%, gris → couleur pure
L (Lightness) Luminosité : 0-100%, noir → blanc
Valeur de teinte Couleur
0° / 360° Rouge
60° Jaune
120° Vert
180° Cyan
240° Bleu
300° Magenta

Cercle chromatique

         0° Rouge
    300°       60°
   Magenta     Jaune
  240°         120°
    Bleu       Vert
        180° Cyan

Cinq schémas classiques de combinaison de couleurs

1. Combinaison monochromatique (Monochromatic)

Même teinte, saturation et luminosité différentes.

:root {
  --primary-50: hsl(220, 100%, 97%);   /* Bleu très clair */
  --primary-100: hsl(220, 100%, 94%);
  --primary-200: hsl(220, 100%, 88%);
  --primary-300: hsl(220, 100%, 78%);
  --primary-400: hsl(220, 100%, 68%);
  --primary-500: hsl(220, 100%, 58%);  /* Bleu de base */
  --primary-600: hsl(220, 100%, 48%);
  --primary-700: hsl(220, 100%, 38%);
  --primary-800: hsl(220, 100%, 28%);
  --primary-900: hsl(220, 100%, 18%);  /* Bleu très foncé */
}

Application : Épuré, professionnel, forte identité de marque

2. Combinaison analogue (Analogous)

Couleurs adjacentes à 30° sur le cercle chromatique.

:root {
  --analogous-1: hsl(200, 80%, 50%);  /* Bleu */
  --analogous-2: hsl(220, 80%, 50%);  /* Bleu-violet */
  --analogous-3: hsl(240, 80%, 50%);  /* Violet */
}

Application : Harmonieux, naturel, chaleureux

3. Combinaison complémentaire (Complementary)

Couleurs opposées à 180° sur le cercle chromatique.

:root {
  --primary: hsl(220, 80%, 55%);    /* Bleu */
  --complement: hsl(40, 80%, 55%);  /* Orange */
}

Application : Contraste élevé, accrocheur, boutons CTA

4. Combinaison triadique (Triadic)

Trois couleurs équidistantes à 120° sur le cercle chromatique.

:root {
  --triadic-1: hsl(0, 70%, 55%);    /* Rouge */
  --triadic-2: hsl(120, 70%, 55%);  /* Vert */
  --triadic-3: hsl(240, 70%, 55%);  /* Bleu */
}

Application : Vivant, coloré, produits pour enfants

5. Combinaison complémentaire divisée (Split-Complementary)

30° de chaque côté de la couleur complémentaire.

:root {
  --primary: hsl(220, 80%, 55%);     /* Bleu */
  --split-1: hsl(10, 80%, 55%);      /* Rouge-orange */
  --split-2: hsl(50, 80%, 55%);      /* Jaune-orange */
}

Application : Riche mais sans confusion, plus doux que le complémentaire


Normes de contraste WCAG

Calcul du contraste

Contraste = (L1 + 0,05) / (L2 + 0,05)

L1 = Luminance relative de la couleur la plus claire
L2 = Luminance relative de la couleur la plus sombre

Calcul de la luminance relative :
L = 0,2126 × R + 0,7152 × G + 0,0722 × B
(R/G/B doivent d'abord être linéarisés en sRGB)

Norme WCAG 2.1

Niveau Texte courant Grand texte Composants UI
AA 4,5:1 3:1 3:1
AAA 7:1 4,5:1 -

Grand texte : ≥18pt (24px) ou ≥14pt gras

Vérifier le contraste avec JavaScript

function getContrastRatio(color1: string, color2: string): number {
  const l1 = getRelativeLuminance(color1);
  const l2 = getRelativeLuminance(color2);
  const lighter = Math.max(l1, l2);
  const darker = Math.min(l1, l2);
  return (lighter + 0.05) / (darker + 0.05);
}

function getRelativeLuminance(hex: string): number {
  const rgb = hexToRgb(hex);
  const [r, g, b] = [rgb.r / 255, rgb.g / 255, rgb.b / 255]
    .map(c => c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4));
  return 0.2126 * r + 0.7152 * g + 0.0722 * b;
}

function meetsWcagAA(fg: string, bg: string, isLargeText = false): boolean {
  const ratio = getContrastRatio(fg, bg);
  return isLargeText ? ratio >= 3 : ratio >= 4.5;
}

Génération de palettes professionnelles

Échelles de couleurs style Tailwind CSS

function generatePalette(baseHue: number, baseSat: number) {
  const lightnesses = [97, 94, 88, 78, 68, 58, 48, 38, 28, 18];
  return lightnesses.map((l, i) => ({
    name: `${(i) * 100}`,
    value: `hsl(${baseHue}, ${baseSat}%, ${l}%)`,
  }));
}

// Générer une palette bleue
const bluePalette = generatePalette(220, 80);
// 50: hsl(220, 80%, 97%)
// 100: hsl(220, 80%, 94%)
// ...
// 900: hsl(220, 80%, 18%)

Espace colorimétrique OKLCH (plus uniforme)

/* OKLCH est perceptuellement plus uniforme que HSL */
:root {
  --blue-50: oklch(97% 0.01 250);
  --blue-500: oklch(62% 0.19 250);
  --blue-900: oklch(30% 0.12 250);
}
Espace colorimétrique Uniformité perceptuelle Support navigateurs
HSL ❌ Non uniforme Tous
OKLCH ✅ Uniforme Chrome 111+, Safari 15.4+
OKLAB ✅ Uniforme Chrome 111+, Safari 15.4+

Combinaison de couleurs en mode sombre

/* Mode clair */
:root {
  --bg: #ffffff;
  --surface: #f5f5f5;
  --text: #1f2937;
  --text-secondary: #6b7280;
  --border: #e5e7eb;
}

/* Mode sombre : ne pas simplement inverser, mais réduire le contraste */
[data-theme="dark"] {
  --bg: #111827;
  --surface: #1f2937;
  --text: #f9fafb;
  --text-secondary: #9ca3af;
  --border: #374151;
}

Principes de combinaison en mode sombre

  1. Ne pas utiliser le noir pur #000 : Utiliser des gris foncés comme #111827
  2. Réduire la saturation de la couleur principale : Saturation élevée en mode sombre est éblouissante
  3. Maintenir le contraste ≥ 4,5:1 : Standard WCAG AA
  4. Remplacer les ombres par des couches de fond plus sombres : Les ombres ne sont pas visibles en mode sombre

Référence de palettes classiques

Technologie/SaaS

Couleur principale : #3b82f6 (Bleu 500)
Couleur secondaire : #8b5cf6 (Violet 500)
Accent : #06b6d4 (Cyan 500)
Fond : #f8fafc
Texte : #0f172a

E-commerce/Consommation

Couleur principale : #f97316 (Orange 500)
Couleur secondaire : #ef4444 (Rouge 500)
Accent : #22c55e (Vert 500)
Fond : #ffffff
Texte : #1f2937

Finance/Professionnel

Couleur principale : #1e40af (Bleu 800)
Couleur secondaire : #059669 (Vert 600)
Accent : #d97706 (Ambre 600)
Fond : #f9fafb
Texte : #111827

Génération de combinaisons avec ToolsKu

  1. Ouvrez l'outil de conversion de couleur ou le générateur de dégradés
  2. Sélectionnez la couleur de base
  3. Générez automatiquement l'échelle de couleurs (50-900)
  4. Vérifiez si le contraste respecte WCAG AA
  5. Prévisualisez l'effet en mode sombre
  6. Copiez le code des variables CSS

Questions fréquentes

Pourquoi ma combinaison de couleurs paraît-elle « sale » ?

HSL a une perception de saturation incohérente à luminosité élevée/faible. Utilisez l'espace colorimétrique OKLCH pour générer des échelles de couleurs plus propres.

Les couleurs sont trop éblouissantes en mode sombre ?

Réduisez la saturation de 20-30%, augmentez la luminosité de 5-10% :

/* Mode clair */
--primary: hsl(220, 80%, 55%);

/* Mode sombre : réduire la saturation */
--primary: hsl(220, 60%, 65%);

Comment garantir la compatibilité avec les daltoniens ?

  • Ne pas dépendre uniquement de la couleur pour transmettre l'information (ajouter des icônes/texte)
  • La combinaison rouge-vert n'est pas adaptée aux daltoniens, utiliser le bleu-orange comme alternative
  • Tester avec le simulateur de daltonisme

Résumé

Une bonne combinaison de couleurs résulte de la théorie des couleurs + des normes de contraste + de tests pratiques. Maîtriser les cinq schémas classiques de combinaison, les normes de contraste WCAG et l'espace colorimétrique OKLCH permet de générer des palettes de niveau professionnel. Rappelez-vous : la combinaison de couleurs n'est pas un art, c'est de l'ingénierie — il y a des normes à suivre, des outils pour mesurer.

#调色板#颜色搭配#色彩理论#UI设计#教程