Mis à jour 10 juillet 2026

OKLCH et la couleur CSS moderne : le guide pratique

OKLCH décrit la couleur avec trois valeurs perceptuelles — luminosité, chroma, teinte — où des nombres égaux signifient une apparence égale. Cette seule propriété transforme le travail de palette, qui passe de la correction manuelle au calcul : des rampes régulières, un contraste prévisible, des thèmes sombres dérivés plutôt que rechoisis. Ce hub rassemble nos guides sur le modèle de couleur et sur ce qu’il change en pratique ; la version en une image, c’est une rampe aux pas véritablement réguliers.

Le problème qu’il résout

Les modèles plus anciens comme HSL décrivent comment les nombres RGB se combinent, pas comment les couleurs apparaissent. Le résultat est familier à quiconque a déjà généré une palette : des pas qui s’entassent au milieu, des teintes qui dérivent, une colonne de la palette qui passe le contraste tandis que sa voisine échoue à la « même » luminosité. Quand la luminosité veut dire ce qu’elle annonce, ces problèmes cessent d’être de l’artisanat et deviennent de l’arithmétique.

OKLCH vs HSL démontre le mensonge de la luminosité avec des paires de couleurs concrètes, et Qu’est-ce que l’uniformité perceptuelle ? explique la propriété sous-jacente : une distance numérique égale signifie une différence visible égale. Qu’est-ce qu’un JND ajoute la mesure qui transforme « ces deux-là paraissent identiques » en une affirmation vérifiable.

Ce qui change en pratique

Avec un modèle perceptuel en dessous, une palette devient un ensemble de courbes plutôt qu’un ensemble de choix : une courbe de luminosité place les pas, un profil de chroma façonne l’endroit où la saturation culmine, et la même mécanique dérive les thèmes sombres et vérifie le contraste. Vous écrivez rarement des valeurs oklch() à la main — le modèle est le moteur sous la palette, et les valeurs réapparaissent dans les design tokens générés et dans le CSS quand vous devez raisonner sur une couleur.

C’est ce rôle de moteur qu’en fait Scale Composer : une seule échelle pilote ensemble la couleur, la typographie et la grille, et le versant couleur est calculé en OKLCH pour que les rampes sortent régulières sans correction teinte par teinte. Cette façon de travailler fondée sur les courbes a son propre hub — les échelles de couleur traitent les courbes de luminosité et les profils de chroma comme des décisions de conception à part entière — et le hub mode sombre couvre le versant dérivation : un thème sombre calculé en ajustant la luminosité et le chroma plutôt qu’en inversant quoi que ce soit.

Les gamuts : le bémol honnête

Toutes les combinaisons luminosité-chroma-teinte n’existent pas sur un écran. Le chroma a un plafond qui dépend de la luminosité et de la teinte, et les écrans P3 à gamut plus large le relèvent. Une bonne génération de palette respecte ce plafond en gardant une marge de sécurité au lieu de buter contre lui — plusieurs guides ci-dessous expliquent ce que cela signifie pour les accents de marque et l’imagerie. sRGB vs Display-P3 cartographie les deux gamuts et indique où en sont réellement les écrans à gamut large aujourd’hui, et L’écrêtage de gamut montre ce qui se passe quand une couleur générée dépasse le plafond. Le contraste est l’autre frontière stricte qu’une palette générée doit respecter ; le hub contraste explique comment le vérifier.

Par où commencer la lecture

Qu’est-ce qu’OKLCH ? est l’introduction de fond — commencez par là si les trois axes vous sont nouveaux, puis prenez Qu’est-ce que le chroma ? pour le seul axe sans équivalent dans le langage courant. Côté implémentation, La syntaxe CSS oklch() explique comment écrire les valeurs, Convertir du hex en OKLCH explique comment faire entrer et sortir une palette existante, et La prise en charge d’oklch() par les navigateurs tranche la question de savoir si vous pouvez l’expédier sans étape de compilation (vous le pouvez, nativement, dans tous les principaux navigateurs). Deux guides appliquent ensuite le modèle à des problèmes qui semblent sans rapport jusqu’à ce que le modèle les révèle : Pourquoi vos gris ne sont pas vraiment neutres sur le chroma résiduel qui se cache dans la plupart des échelles de gris, et Les rampes de couleur doivent-elles décaler la teinte ? sur les cas où une dérive de teinte est un bug et ceux où c’est une décision.

Guides de ce hub

  • Convertir le hex en OKLCH (et inversement)

    La conversion du hex vers OKLCH est sans perte ; le retour peut écrêter. Comment fonctionne le pipeline, pourquoi cette asymétrie existe, et une rampe détaillée à partir d'un vrai hex de marque.

  • Écrêtage du gamut : pourquoi vos couleurs sont écrasées

    L'écrêtage du gamut écrase les couleurs qui existent dans le modèle mais pas à l'écran : pourquoi le plafonnement des canaux décale la teinte, pourquoi les rampes s'aplatissent, et comment la marge de sécurité l'évite.

  • La syntaxe CSS oklch() expliquée

    Une référence pratique pour la syntaxe CSS oklch() : les trois valeurs et l'alpha, des exemples de boutons concrets, les couleurs relatives avec oklch(from …), et les solutions de repli.

  • Les espaces colorimétriques expliqués aux designers

    Les espaces colorimétriques expliqués aux designers : sRGB, P3 et Rec.2020 sont des gamuts, OKLCH et HSL des systèmes de coordonnées — et quelle combinaison convient à quel travail.

  • Les rampes de couleur doivent-elles décaler la teinte ?

    Le décalage de teinte des rampes de couleur, expliqué : pourquoi les palettes réglées à la main faisaient tourner la teinte, pourquoi OKLCH rend une teinte constante visuellement constante, et quand la rotation est un choix délibéré.

  • OKLCH dans Tailwind v4

    Tailwind OKLCH en pratique : v4 a reconstruit sa palette en OKLCH et déplacé la config dans le CSS. Comment définir des couleurs de marque personnalisées dans @theme — et ce que ça vous apporte.

  • OKLCH vs HSL : pourquoi HSL ment sur la luminosité

    OKLCH vs HSL : la luminosité de HSL est une fraction des chiffres RGB, pas une mesure de la perception — jaune et bleu à 50 % diffèrent énormément. Ce qu'OKLCH corrige, et comment.

  • OKLCH vs LAB et LCH

    OKLCH vs LAB et LCH : ce que partagent les espaces colorimétriques perceptuels de 1976 et 2020, comment OKLab a corrigé le décalage de teinte du bleu de CIELAB, et quand chacun est le bon outil.

  • Pourquoi vos gris ne sont pas vraiment neutres

    Une couleur gris neutre aux canaux RGB égaux paraît souvent froide à côté d'une palette de marque. Pourquoi la perception décale les gris, et comment un soupçon de chroma corrige le problème.

  • Prise en charge de oklch() par les navigateurs en 2026

    Prise en charge de OKLCH par les navigateurs en 2026 : tous les grands moteurs proposent oklch() depuis 2023. Qui reste sur la longue traîne, et les solutions de repli économiques qui les couvrent.

  • Qu'est-ce qu'OKLCH ? Une explication pour les designers

    OKLCH décrit la couleur avec trois valeurs qui correspondent à la perception humaine : luminosité, chroma, teinte. Découvrez pourquoi il a remplacé HSL pour les palettes, les rampes et le contraste.

  • Qu'est-ce qu'une JND — quand deux couleurs semblent identiques

    La différence à peine perceptible que mesurent les spécialistes de la couleur : le plus petit changement qu'un œil peut détecter de façon fiable. Pourquoi les paliers d'une palette séparés de moins de 0,02 de luminosité OKLCH fusionnent.

  • Qu'est-ce que l'uniformité perceptuelle ?

    L'uniformité perceptuelle signifie que des distances numériques égales paraissent des différences visibles égales. Pourquoi RGB et HSL échouent au test, et ce que l'uniformité apporte au travail de design.

  • Qu'est-ce que le chroma (et en quoi n'est-il pas la saturation) ?

    Le chroma mesure la coloration de façon absolue ; la saturation est un pourcentage de ce qu'une teinte autorise. Pourquoi cette différence compte pour les palettes et les couleurs d'accent.

  • sRGB vs Display-P3 : ce que les designers doivent savoir

    sRGB vs Display-P3 : ce qu'est un gamut, où vivent les couleurs supplémentaires du P3, pourquoi le hex ne peut pas les exprimer, et quand le gamut étendu vaut l'effort dans de vrais projets.

Partez de votre propre couleur

Le modèle prend tout son sens avec une couleur qui vous tient à cœur : déposez une couleur de marque dans Scale Composer et il suggère des couleurs d’appoint dérivées d’elle — puis observez comment les rampes qu’il construit conservent leurs pas de luminosité sur chaque teinte. Ce comportement est OKLCH, vu plutôt qu’expliqué.

Questions fréquentes

Qu'est-ce qu'OKLCH en termes simples ?

Une façon de décrire la couleur avec trois valeurs qui correspondent à la perception humaine — la luminosité (à quel point elle paraît claire), le chroma (à quel point elle est colorée) et la teinte (quelle couleur c'est). Deux couleurs ayant le même L paraissent véritablement aussi claires l'une que l'autre.

Pourquoi OKLCH est-il meilleur que HSL ?

La luminosité de HSL est calculée à partir des nombres RGB, pas de la perception — un jaune à 50 % paraît presque blanc tandis qu'un bleu à 50 % paraît sombre. En OKLCH, une luminosité égale paraît égale, ce qui rend les palettes générées et le contraste prévisibles.

oklch() est-il pris en charge par les navigateurs ?

Oui — c'est du CSS natif dans tous les principaux navigateurs depuis 2023, sans étape de compilation requise. Les solutions de repli ne comptent que pour le trafic hérité.

Qu'est-ce que le chroma ?

La quantité de coloration, mesurée de façon absolue — un chroma de 0,15 représente la même « quantité de couleur » dans n'importe quelle teinte. C'est différent de la saturation, qui est un pourcentage de ce qu'une teinte et une luminosité données autorisent.

Tailwind utilise-t-il OKLCH ?

La palette par défaut de Tailwind v4 est définie en OKLCH, et les outils de palette modernes ont largement évolué dans le même sens — les rampes générées sortent régulières sans correction manuelle teinte par teinte.

Les codes hex peuvent-ils stocker des couleurs P3 ?

Non. Le hex est limité au sRGB ; les couleurs à gamut large ont besoin de la syntaxe color(display-p3 …) ou d'un espace capable de gérer un gamut large comme OKLCH. Les écrans de la plupart des téléphones et Mac actuels peuvent afficher le P3.