Sistema de Cores do Tailwind CSS: Como os Tons São Gerados
Embed This Widget
Add the script tag and a data attribute to embed this widget.
Embed via iframe for maximum compatibility.
<iframe src="https://colorfyi.com/iframe/entity//" width="420" height="400" frameborder="0" style="border:0;border-radius:10px;max-width:100%" loading="lazy"></iframe>
Paste this URL in WordPress, Medium, or any oEmbed-compatible platform.
https://colorfyi.com/entity//
Add a dynamic SVG badge to your README or docs.
[](https://colorfyi.com/entity//)
Use the native HTML custom element.
O Tailwind CSS vem com um dos sistemas de cores mais amplamente utilizados no desenvolvimento web. Sua paleta de 22 famílias de cores — cada uma dividida em 11 tons de 50 a 950 — alimenta milhões de sites e tornou-se um padrão de fato para como desenvolvedores pensam sobre escalas de cores. Mas de onde vêm esses tons, como são gerados e como você pode criar suas próprias escalas que se encaixam perfeitamente no sistema? Este artigo responde a todas essas questões.
A Filosofia de Design do Tailwind para Cores
O Tailwind não usa uma abordagem aritmética simples para gerar tons. Em vez disso, a equipe do Tailwind curou manualmente cada tom da paleta original usando uma combinação de luminosidade perceptual e julgamento estético, com o objetivo de criar tons que sejam:
- Úteis em cada passo: Cada tom de 50 a 950 deve ser um tom que alguém plausivamente quereria usar — não um elemento de preenchimento que acaba sem uso.
- Consistentes entre matizes: Um tom
500de azul deve parecer igualmente "médio" em brilho percebido que um tom500de verde, mesmo que os valores hex subjacentes sejam completamente diferentes. - Consciente do WCAG: Os tons mais escuros (700–950) devem atingir contraste AA contra branco; os tons mais claros (50–200) devem atingir contraste AA contra preto.
Essa filosofia explica por que você não pode gerar a paleta do Tailwind com uma simples fórmula de luminosidade HSL. As matizes diferem em seu brilho perceptual inerente — amarelo é intrinsecamente mais claro que azul no mesmo valor de luminosidade HSL — portanto, cada família de cores requer ajuste individual.
As 22 Famílias de Cores
O Tailwind v3 e v4 vêm com 22 famílias de cores nomeadas:
| Família | Valor 500 Representativo |
|---|---|
| Slate | #64748B |
| Gray | #6B7280 |
| Zinc | #71717A |
| Neutral | #737373 |
| Stone | #78716C |
| Red | #EF4444 |
| Orange | #F97316 |
| Amber | #F59E0B |
| Yellow | #EAB308 |
| Lime | #84CC16 |
| Green | #22C55E |
| Emerald | #10B981 |
| Teal | #14B8A6 |
| Cyan | #06B6D4 |
| Sky | #0EA5E9 |
| Blue | #3B82F6 |
| Indigo | #6366F1 |
| Violet | #8B5CF6 |
| Purple | #A855F7 |
| Fuchsia | #D946EF |
| Pink | #EC4899 |
| Rose | #F43F5E |
Note as cinco famílias neutras (slate a stone): elas não são apenas diferentes níveis de saturação do mesmo cinza. Cada uma tem um toque de matiz distinto — slate se inclina para azul-cinza, stone se inclina para marrom-cinza quente, neutral é a mais puramente acromática. Isso dá aos designers opções para ambientes que pedem tons frios, quentes ou neutros em seu scaffolding de cinza.
Os 11 Passos de Tom
Cada família de cores contém onze tons:
| Passo | Uso Pretendido |
|---|---|
| 50 | Tintes muito claros; fundos de página, divisores sutis |
| 100 | Tintes claros; fundos de cartão, listras de tabela |
| 200 | Tons médios claros; bordas, estados desabilitados |
| 300 | Médio-claro; texto de placeholder em fundos escuros |
| 400 | Tom médio; ícones secundários, texto secundário |
| 500 | Matiz "pura"; cor de marca primária, badges |
| 600 | Tom médio-escuro; estados de hover para elementos coloridos em 500 |
| 700 | Escuro; texto primário em fundos claros |
| 800 | Muito escuro; títulos, texto de alta ênfase |
| 900 | Quase preto; contraste máximo de texto |
| 950 | Mais escuro; adicionado no Tailwind v3.3 para mais profundidade de sombra |
O tom 950 foi adicionado posteriormente porque designers descobriram que o 900 às vezes não era escuro o suficiente para efeitos de sombra profunda, especialmente no modo escuro, onde as cores de superfície são muito escuras e precisam de um tom ainda mais profundo para camadas.
O passo 500 é intencionalmente o tom "canônico" de cada cor — aquele que parece mais com o que você esperaria se alguém dissesse "quero azul" ou "quero verde". Todos os outros passos são entendidos em relação a essa âncora.
Como o Algoritmo de Tom Funciona
Embora as cores do Tailwind tenham sido curadas manualmente, a equipe usou um processo fundamentado no espaço de cor OKLCH para manter a consistência perceptual. OKLCH (Oklab Lightness Chroma Hue) foi projetado para que mudanças numéricas iguais na luminosidade produzam mudanças iguais de brilho percebido, ao contrário do HSL ou RGB, onde mudanças de matiz alteram drasticamente a luminosidade percebida.
O processo geral para uma família de cores se parece com este:
- Escolha o valor 500: Defina a cor de marca primária para esta família em OKLCH ou espaço perceptual equivalente.
- Defina alvos de luminosidade para cada passo: Mapeie os 11 passos para valores específicos de luminosidade OKLCH — por exemplo, o passo 50 pode ter como alvo uma luminosidade OKLCH de 0,97, enquanto o passo 950 tem como alvo 0,13.
- Mantenha croma e matiz: Onde possível, mantenha o croma (saturação) e o ângulo de matiz constantes entre os passos, ajustando apenas a luminosidade.
- Ajuste manualmente para mudança de matiz: Muitas matizes exibem mudanças de matiz indesejadas quando ficam mais claras ou mais escuras em OKLCH. O amarelo, por exemplo, tende a se deslocar para verde quando escurecido. O ajuste humano é necessário em cada passo para corrigir essas mudanças.
- Converta para hex sRGB: Os valores OKLCH finais são convertidos para códigos hex para uso em CSS.
Você pode ver o resultado desse processo comparando como a paleta do Tailwind lida com amarelo versus azul. Os passos do azul se deslocam ligeiramente em temperatura (os azuis mais escuros têm mais caráter índigo), enquanto os passos do amarelo se deslocam para oliva quando escurecidos para evitar ficar turvo. Essas são correções perceptuais deliberadas que nenhum algoritmo puro produziria automaticamente.
Use o Conversor de Cor para examinar qualquer valor hex do Tailwind no espaço OKLCH e observar como luminosidade, croma e matiz mudam ao longo da escala.
Personalizando a Paleta de Cores do Tailwind
Tailwind v3 (tailwind.config.js)
No Tailwind v3, você estende ou substitui a paleta no tailwind.config.js:
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
brand: {
50: '#f0f9ff',
100: '#e0f2fe',
200: '#bae6fd',
300: '#7dd3fc',
400: '#38bdf8',
500: '#0ea5e9',
600: '#0284c7',
700: '#0369a1',
800: '#075985',
900: '#0c4a6e',
950: '#082f49',
},
},
},
},
}
Usar extend preserva todas as cores integradas; substituir theme.colors diretamente as remove.
Tailwind v4 (Configuração Baseada em CSS)
O Tailwind v4 elimina o arquivo de configuração JavaScript. As cores agora são definidas como propriedades CSS personalizadas no seu arquivo CSS principal:
@import "tailwindcss";
@theme {
--color-brand-50: #f0f9ff;
--color-brand-100: #e0f2fe;
--color-brand-200: #bae6fd;
--color-brand-300: #7dd3fc;
--color-brand-400: #38bdf8;
--color-brand-500: #0ea5e9;
--color-brand-600: #0284c7;
--color-brand-700: #0369a1;
--color-brand-800: #075985;
--color-brand-900: #0c4a6e;
--color-brand-950: #082f49;
}
Isso gera as classes utilitárias bg-brand-50 a bg-brand-950, text-brand-*, border-brand-* e assim por diante — exatamente como as cores integradas funcionam, mas com a sua matiz personalizada.
O Que Mudou no Tailwind v4
O Tailwind v4 introduziu várias mudanças significativas no sistema de cores:
Variáveis CSS como Fonte da Verdade
No v4, cada cor integrada é exposta como uma propriedade CSS personalizada. Isso significa que você pode acessar qualquer cor do Tailwind em CSS puro sem classes utilitárias do Tailwind:
.custom-element {
background-color: var(--color-blue-500);
border-color: var(--color-blue-200);
}
Isso não era facilmente possível no v3 sem ferramentas adicionais ou duplicação manual de valores hex.
Valores de Cor OKLCH
O Tailwind v4 expressa suas cores em OKLCH em vez de hex sRGB. Isso tem várias vantagens:
- Suporte a amplo gamut: Em displays que suportam gamuts P3 ou Rec. 2020, as cores podem ser mais vívidas do que o gamut sRGB permite.
- Melhor interpolação: Gradientes entre duas cores do Tailwind produzem resultados perceptualmente mais uniformes.
- Manipulação previsível: Ajustar a luminosidade em OKLCH é mais confiável do que ajustá-la em HSL.
A mudança é majoritariamente transparente para desenvolvedores que usam classes utilitárias — bg-blue-500 continua parecendo o mesmo — mas importa se você estiver construindo gradientes personalizados ou animações que interpolam entre cores.
Tokens de Cor Semânticos
O v4 também introduziu melhor suporte para tokens de cor semânticos — variáveis que descrevem o que uma cor faz em vez de como ela parece:
@theme {
--color-primary: var(--color-blue-600);
--color-primary-hover: var(--color-blue-700);
--color-surface: var(--color-slate-50);
--color-on-surface: var(--color-slate-900);
}
Esse padrão mapeia a camada semântica do seu sistema de design sobre a camada de escala do Tailwind, dando a você a capacidade de trocar temas sem alterar a marcação dos componentes.
Construindo uma Escala Personalizada que se Encaixa no Tailwind
Se você precisa de uma cor personalizada que não está na paleta padrão — o laranja específico da sua marca ou um verde especial — você tem duas opções: encontrar a família integrada mais próxima e ajustar, ou gerar uma escala completamente nova.
Usando o Gerador de Tons
O Gerador de Tons produz uma escala completa de 50 a 950 a partir de um único código hex de entrada. Insira a cor primária da sua marca e a ferramenta:
- Converte o hex para OKLCH
- Calcula alvos de luminosidade para cada um dos 11 passos
- Ajusta o croma adequadamente para que tons mais claros sejam menos saturados e tons mais escuros mantenham profundidade
- Gera valores hex sRGB prontos para colar no seu config do Tailwind
Por exemplo, se a cor da sua marca é #0F766E (um teal-verde), o gerador pode produzir:
| Passo | Hex |
|---|---|
| 50 | #F0FDFA |
| 100 | #CCFBF1 |
| 200 | #99F6E4 |
| 300 | #5EEAD4 |
| 400 | #2DD4BF |
| 500 | #14B8A6 |
| 600 | #0D9488 |
| 700 | #0F766E |
| 800 | #115E59 |
| 900 | #134E4A |
| 950 | #042F2E |
Isso corresponde à escala Teal integrada do Tailwind, demonstrando que o resultado do gerador se alinha com o caráter visual da paleta oficial.
Usando as Cores do Tailwind para o Modo Escuro
O sistema de tons do Tailwind é bem adequado para o modo escuro porque a escala fornece valores de imagem espelhada. Uma convenção típica:
| Modo Claro | Modo Escuro | Propósito |
|---|---|---|
slate-50 |
slate-900 |
Fundo da página |
slate-100 |
slate-800 |
Fundo de cartão |
slate-200 |
slate-700 |
Borda |
slate-900 |
slate-100 |
Texto do corpo |
blue-600 |
blue-400 |
Ação primária |
O insight principal é que você inverte o número do tom em vez da cor. Onde você usa slate-100 no modo claro, você usa slate-900 no modo escuro. Para cores interativas como links e botões, você muda de um tom mais escuro (600) no modo claro para um tom mais claro (400) no modo escuro, mantendo o contraste contra o fundo diferente.
A variante dark: do Tailwind torna isso sistemático:
<div class="bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100">
<button class="bg-blue-600 dark:bg-blue-400 text-white dark:text-slate-900">
Ação
</button>
</div>
Erros Comuns no Sistema de Cores
Usar o Mesmo Tom em Ambos os Modos
Aplicar bg-blue-600 sem uma substituição dark: é um erro comum. No modo escuro, fundos escuros com um elemento azul brilhante ficam bem, mas um cartão branco em um fundo escuro fica perturbador. Sempre defina variantes de claro e escuro para cores de fundo.
Escolher Tons Não Adjacentes para Contraste
Usar texto gray-400 em um fundo gray-300 cria contraste insuficiente. Uma regra geral: mantenha pelo menos uma diferença de 4 passos entre as sombras de primeiro plano e fundo (por exemplo, texto em slate-100 deve ser pelo menos slate-700). Use o Verificador de Contraste para verificar se combinações específicas atendem ao WCAG AA (4,5:1) ou AAA (7:1).
Usar Famílias de Cores em Excesso
A paleta do Tailwind tem 22 famílias, mas a maioria das interfaces precisa de no máximo três: uma para neutros (gray/slate), uma para a cor de marca primária e uma para estados semânticos (vermelho para erros, verde para sucesso, amarelo para avisos). Escolher quatro ou mais famílias de cores distintas cria complexidade visual sem propósito.
Principais Conclusões
- O Tailwind CSS vem com 22 famílias de cores, cada uma contendo 11 tons de 50 a 950, produzidos por meio de análise de luminosidade perceptual e curadoria humana, em vez de uma fórmula aritmética simples.
- As cinco famílias neutras (slate, gray, zinc, neutral, stone) têm toques de matiz distintos, dando aos designers opções de cinza quente, frio ou neutro.
- O passo 500 é o tom "puro" canônico para cada família de cores; todos os outros passos são entendidos em relação a ele, e o passo 950 foi adicionado no v3.3 para camadas mais profundas de sombra e superfície escura.
- O Tailwind v4 migra para configuração CSS-first com
@theme, expõe todas as cores como propriedades CSS personalizadas e usa OKLCH internamente para melhor uniformidade perceptual e suporte a amplo gamut. - O Gerador de Tons produz uma escala completa compatível com o Tailwind de 50 a 950 a partir de qualquer código hex de entrada, usando alvos de luminosidade baseados em OKLCH.
- Para o modo escuro, inverta o número do tom (50 ↔ 900) em vez de inverter a matiz, e mude as cores interativas de tons mais escuros (600) para tons mais claros (400) a fim de manter o contraste contra fundos escuros.