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:
| Formato | Exemplo | Melhor para |
|---|---|---|
| Nome | tomato, rebeccapurple | Testes rápidos e protótipos |
| Hex | #2563eb, #25e | Copiar 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-chave | transparent, currentColor | Veja 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#2563eb80tem 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. Comwhiteoublack, 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
opacitypara 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.
royalbluenã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.