Menu

Cores CSS: nomes, hex, RGB, RGBA, HSL e transparência

Todas as formas de escrever uma cor no CSS: cores por nome, códigos hex, rgb() e rgba(), hsl(), transparência com canal alfa, currentColor e os mais novos oklch() e color-mix(). Cada uma com um exemplo ao vivo e um conversor.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Formas de escrever uma cor no CSS

Toda propriedade que recebe uma cor (color, background-color, border-color, sombras, fill do SVG) aceita os mesmos formatos. As quatro primeiras amostras são o mesmo azul escrito de quatro jeitos, e a quinta é uma cor por nome que chega perto:

FormatoExemploMelhor para
Nometomato, rebeccapurpleTestes rápidos e protótipos
Hex#2563eb, #25eCopiar de ferramentas de design
rgb()rgb(37 99 235)Acrescentar transparência, trabalhar com valores RGB
hsl()hsl(221 83% 53%)Criar tons mais escuros e mais claros de uma cor
oklch()oklch(55% 0.2 262)Paletas com luminosidade percebida uniforme
Palavras-chavetransparent, currentColorVeja as seções abaixo

Cores hex

Uma cor hex é # seguido de vermelho, verde e azul, cada um com dois dígitos hexadecimais, de 00 a ff. Três formas são atalhos ou extensões:

  • #rgb: cada dígito é duplicado, então #25e é #2255ee.
  • #rrggbbaa: o último par é o alfa, então #2563eb80 tem cerca de 50% de opacidade.
  • #rgba: a forma curta com alfa.

O hex não diferencia maiúsculas de minúsculas: #2563EB e #2563eb são a mesma cor.

rgb() e rgba()

rgb() recebe vermelho, verde e azul de 0 a 255 (ou de 0% a 100%). Um quarto valor opcional depois de uma barra é o alfa, de 0 (invisível) a 1, ou de 0% a 100%.

color: rgb(37 99 235);          /* modern space syntax */
color: rgb(37 99 235 / 50%);    /* half transparent */
color: rgba(37, 99, 235, 0.5);  /* older comma syntax, same result */

rgba() e rgb() agora são a mesma função: as duas aceitam as duas sintaxes e um alfa opcional. Código antigo usa rgba() quando precisa de transparência, e isso continua funcionando.

hsl(): o formato mais fácil de ajustar

hsl() descreve uma cor do jeito que as pessoas pensam nela: um matiz do círculo cromático, uma saturação e uma luminosidade. Mantenha o matiz e mude a luminosidade para ter uma escala inteira:

A primeira linha mantém o matiz 221 e a saturação 83% e só muda a luminosidade. A segunda linha dá a volta no círculo cromático com a mesma saturação e luminosidade.

Transparência: alfa vs opacity

Um canal alfa deixa uma cor transparente. opacity deixa o elemento inteiro transparente, incluindo o texto e os filhos:

transparent é uma palavra-chave para preto totalmente transparente, rgb(0 0 0 / 0). É o fundo padrão da maioria dos elementos.

currentColor

currentColor é igual ao próprio color do elemento. Um botão cuja borda, ícone e texto usam essa palavra-chave muda tudo com uma única declaração:

.button {
  color: #16a34a;
  border: 2px solid currentColor;
}
.button svg { fill: currentColor; }

As bordas já usam currentColor por padrão, e é por isso que border: 2px solid sem cor combina com o texto.

Teste qualquer cor

Digite uma cor em qualquer formato. O navegador a interpreta e mostra o que calculou; uma cor inválida deixa a amostra como estava.

Experimente tomato, #0f0, #2563eb80, rgb(0 0 0 / 25%), oklch(70% 0.15 150) e color-mix(in srgb, #2563eb, white 50%).

Funções de cor mais novas

  • oklch(L C H): luminosidade, croma e matiz em um espaço feito para que a mesma luminosidade pareça igualmente clara. Paletas montadas nele têm menos degraus intermediários sem vida que as feitas em HSL.
  • color-mix(in srgb, A, B 30%): mistura duas cores. Com white ou black, gera tons mais claros e mais escuros a partir de uma única cor da marca, e funciona com variáveis CSS: color-mix(in srgb, var(--brand), white 80%).

As duas funcionam nas versões atuais de Chrome, Firefox e Safari. Guarde as cores da marca em variáveis CSS para que os formatos escolhidos fiquem em um só lugar.

Erros comuns

  • Esquecer o # em uma cor hex. color: 2563eb é inválido e ignorado.
  • Usar opacity para deixar um fundo transparente. Ela esmaece o texto também. Use uma cor com alfa.
  • Misturar separadores na sintaxe moderna. rgb(37 99, 235) é inválido: use só espaços ou só vírgulas.
  • Achar que uma cor por nome bate com o seu design. royalblue não é #2563eb. Copie o código exato.
  • Avaliar o contraste no olho. Confira as cores de texto contra o fundo com um verificador de contraste; 4.5:1 é o mínimo para o texto do corpo.

Perguntas frequentes

Quais formatos de cor o CSS aceita?

Cores por nome (red), hex (#ff0000), rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch() e color(), além das palavras-chave transparent e currentColor. Hex, rgb e hsl cobrem quase todo o trabalho do dia a dia.

Qual a diferença entre rgb e rgba?

Nenhuma, hoje em dia. rgba() é um apelido antigo: o CSS atual deixa o rgb() receber um valor alfa (rgb(37 99 235 / 50%)), e as duas funções aceitam os mesmos argumentos em todos os navegadores atuais.

Como deixar uma cor transparente no CSS?

Acrescente um canal alfa: rgb(0 0 0 / 50%), hsl(221 83% 53% / 0.5) ou um hex de 8 dígitos como #2563eb80. Ao contrário de opacity, isso esmaece só aquela cor, não o elemento inteiro.

O que é HSL no CSS?

Hue, saturation, lightness: matiz, saturação e luminosidade. O matiz é um ângulo no círculo cromático (0 vermelho, 120 verde, 240 azul), a saturação é o quanto a cor é viva e a luminosidade vai de 0% preto a 100% branco. Ele facilita tons mais claros e mais escuros: mude só o último número.

O que significa currentColor?

É o valor da propriedade color do elemento. Usá-lo em uma borda ou no fill de um SVG faz os dois seguirem a cor do texto automaticamente.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR