Ir para o seletor de cores

OKLCH explicado: o formato de cor que finalmente corresponde ao que você vê

OKLCH descreve uma cor pelo quanto ela parece clara, pelo quanto ela é intensa e pelo matiz que ela tem. Diferente do HSL, o mesmo valor de luminosidade parece igualmente claro em qualquer matiz, o que deixa paletas, estados de hover e contraste acessível previsíveis.

3 min de leitura

O que é OKLCH

OKLCH é a forma polar do Oklab, um espaço de cor perceptual publicado por Björn Ottosson em 2020. Ele tem três números. L é a luminosidade percebida, de 0 (preto) a 1 ou 100% (branco). C é o croma, a quantidade de cor, de 0 (cinza) até cerca de 0,37 nas cores mais vivas que uma tela consegue mostrar. H é o ângulo do matiz, de 0 a 360 graus.

A mesma cor escrita em formatos diferentes fica assim. Todos os valores abaixo são calculados em tempo real pelo PickShade, então você pode copiá-los do jeito que estão.

Exemplo: #ff5733
FormatoValor
HEX
RGB
HSL
OKLCH
OKLab

Por que OKLCH é melhor que HSL

A luminosidade do HSL é uma fórmula, não uma percepção. hsl(60 100% 50%) é um amarelo vivo e hsl(240 100% 50%) é um azul escuro, mas os dois dizem ter 50% de luminosidade. Monte uma paleta em HSL e cada matiz vai precisar de ajuste manual.

No OKLCH, cores com o mesmo L parecem igualmente claras. Você pode manter L e C e girar H para obter um conjunto de matizes equilibrados, ou manter H e C e variar L para obter uma escala de tons limpa. É por isso que o Tailwind CSS v4 define toda a paleta padrão em OKLCH.

A luminosidade também prevê o contraste. Um texto com diferença de L de aproximadamente 0,4 ou mais em relação ao fundo costuma ser legível, o que facilita muito pensar em escolhas de cor acessíveis.

Sintaxe no CSS

A luminosidade pode ser escrita como porcentagem ou como número de 0 a 1. O croma é um número. O matiz é um ângulo em graus. A transparência vem depois de uma barra.

CSS

color: oklch(62.8% 0.258 29.23);
background: oklch(0.7 0.15 250 / 50%);
border-color: oklch(from var(--brand) calc(l - 0.1) c h);

Suporte nos navegadores

oklch() funciona em todos os navegadores atuais: Safari desde a versão 15.4, Chrome e Edge desde a 111, Firefox desde a 113. Isso cobre bem mais de 90% dos usuários. Para navegadores muito antigos, coloque um fallback em HEX na linha anterior ao valor OKLCH.

CSS

color: #ff5733;
color: oklch(68% 0.21 33.7);

Limites de croma e gamut

OKLCH consegue descrever cores que nenhuma tela mostra. O croma máximo depende da luminosidade e do matiz: um amarelo vivo só é possível com luminosidade alta, um azul vivo só com luminosidade baixa. Quando um valor fica fora do gamut sRGB ou Display P3, o navegador o traz de volta para dentro, o que pode alterar a cor.

O PickShade marca as cores fora do sRGB e mostra a cor mais próxima que cabe, encontrada reduzindo o croma e mantendo a luminosidade e o matiz, o mesmo método que o CSS Color 4 recomenda.

Como converter HEX para OKLCH

A conversão vai de HEX para sRGB, de sRGB para luz linear, de sRGB linear para o espaço de cones LMS, passa por uma raiz cúbica, por uma matriz até o Oklab e, por fim, do Oklab para coordenadas polares. Fazer isso à mão é fácil de errar, então cole qualquer cor no conversor e copie o resultado.

Perguntas e respostas

OKLCH funciona em todos os navegadores?

Sim, em todos os navegadores atuais: Safari 15.4 ou mais recente, Chrome e Edge 111 ou mais recentes, Firefox 113 ou mais recente. Se você precisa dar suporte a navegadores antigos, coloque uma linha em HEX antes.

Qual é a diferença entre OKLCH e LCH?

Os dois descrevem luminosidade, croma e matiz. O lch() do CSS se baseia no CIELAB, cujos azuis puxam para o roxo quando você muda a luminosidade. O OKLCH se baseia no Oklab, que mantém o matiz estável, então escalas de tons de azul continuam azuis.

Por que minha cor OKLCH aparece diferente do que eu digitei?

Provavelmente o croma está mais alto do que a sua tela consegue mostrar para aquela luminosidade e aquele matiz. O navegador traz a cor para dentro do gamut da tela. Reduza o croma até o PickShade deixar de marcá-la como fora do gamut.

Dá para usar OKLCH com Tailwind CSS?

Sim. O Tailwind CSS v4 já usa OKLCH na paleta padrão, e cores personalizadas em @theme podem ser escritas diretamente em OKLCH.

Experimente no PickShade

Guias relacionados