Colori di Tailwind CSS: la palette OKLCH della v4, colori personalizzati e sfumature
Tailwind CSS v4 include 26 scale di colore con 11 sfumature ciascuna, da 50 a 950, per un totale di 286 colori definiti in OKLCH come variabili CSS del tipo --color-blue-500. Aggiungi i tuoi con @theme { --color-brand-500: oklch(...) }. Lo stesso numero di sfumatura non significa la stessa luminosità: blue-600 è il blu più chiaro che supera 4,5:1 sul bianco, mentre per il giallo serve il 700.
Lettura: 7 min
Com’è strutturata la palette di colori di Tailwind
La palette predefinita di Tailwind v4.3 ha 26 scale con nome. Diciassette sono cromatiche: red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink e rose. Nove sono neutre: slate, gray, zinc, neutral e stone dalla v3, più mauve, olive, mist e taupe aggiunte durante la v4. In più ci sono black e white.
Ogni scala ha le stesse 11 sfumature: 50, 100, da 200 fino a 900, e 950. Il 50 è quasi bianco, il 950 quasi nero. Una classe è formata da utility, colore e sfumatura: bg-blue-500, text-rose-700, border-zinc-200.
Il numero della sfumatura indica una posizione nella scala, non un valore di luminosità. La sfumatura 500 va dal 55,1% di luminosità OKLCH in gray al 79,5% in yellow, ed è per questo che yellow-500 e blue-500 si comportano in modo molto diverso come colori del testo.
| Classe | Valore OKLCH | Fallback hex | Contrasto sul bianco |
|---|---|---|---|
| yellow-500 | oklch(79.5% 0.184 86.047) | #efb100 | 1.92:1 |
| amber-500 | oklch(76.9% 0.188 70.08) | #fd9a00 | 2.14:1 |
| green-500 | oklch(72.3% 0.219 149.579) | #00c950 | 2.22:1 |
| cyan-500 | oklch(71.5% 0.143 215.221) | #00b8db | 2.37:1 |
| orange-500 | oklch(70.5% 0.213 47.604) | #ff6900 | 2.89:1 |
| red-500 | oklch(63.7% 0.237 25.331) | #fb2c36 | 3.81:1 |
| blue-500 | oklch(62.3% 0.214 259.815) | #2b7fff | 3.76:1 |
| indigo-500 | oklch(58.5% 0.233 277.117) | #615fff | 4.58:1 |
| gray-500 | oklch(55.1% 0.027 264.364) | #6a7282 | 4.84:1 |
Il blu di Tailwind: tutte le sfumature con OKLCH, hex e contrasto
Ecco la scala blue completa come la definisce Tailwind v4. La colonna hex riporta il colore sRGB più vicino, trovato riducendo la croma e mantenendo luminosità e tinta. I rapporti di contrasto sono valori WCAG 2 misurati su quell’hex.
Blue-600 è la prima sfumatura che supera 4,5:1 per il testo normale sul bianco. Blue-500 passa sul nero con 5,58:1 ma fallisce sul bianco con 3,76:1. Nessuna sfumatura di blu supera 4,5:1 su entrambi, quindi tema chiaro e tema scuro richiedono sfumature diverse.
| Classe | Valore OKLCH | Fallback hex | Sul bianco | Sul nero |
|---|---|---|---|---|
| blue-50 | oklch(97% 0.014 254.604) | #eff6ff | 1.09:1 | 19.30:1 |
| blue-100 | oklch(93.2% 0.032 255.585) | #dbeafe | 1.22:1 | 17.21:1 |
| blue-200 | oklch(88.2% 0.059 254.128) | #bedbff | 1.42:1 | 14.77:1 |
| blue-300 | oklch(80.9% 0.105 251.813) | #8ec5ff | 1.81:1 | 11.58:1 |
| blue-400 | oklch(70.7% 0.165 254.624) | #51a2ff | 2.64:1 | 7.96:1 |
| blue-500 | oklch(62.3% 0.214 259.815) | #2b7fff | 3.76:1 | 5.58:1 |
| blue-600 | oklch(54.6% 0.245 262.881) | #155dfc | 5.25:1 | 4.00:1 |
| blue-700 | oklch(48.8% 0.243 264.376) | #1447e6 | 6.83:1 | 3.07:1 |
| blue-800 | oklch(42.4% 0.199 265.638) | #193cb8 | 8.82:1 | 2.38:1 |
| blue-900 | oklch(37.9% 0.146 265.522) | #1c398e | 10.37:1 | 2.03:1 |
| blue-950 | oklch(28.2% 0.091 267.935) | #162456 | 14.78:1 | 1.42:1 |
Quali sfumature di Tailwind superano WCAG AA sul bianco
La sfumatura più chiara che supera il test dipende dalla tinta. Orange, amber, yellow, lime, green, emerald, teal, cyan e sky sono ancora chiari al 500, quindi per il testo normale serve il 700. Red, blue, violet, purple, fuchsia, pink e rose passano al 600, indigo già al 500. Yellow è l’eccezione: persino yellow-600 fallisce per il testo grande con 2,93:1.
La luminosità prevede il risultato meglio del numero della sfumatura. Su tutti i 286 colori, ogni sfumatura con luminosità OKLCH sotto il 58% supera 4,5:1 sul bianco, e ogni sfumatura sopra il 59,2% fallisce. Leggi la L nel valore della classe e conosci la risposta prima ancora di testarla.
| Colore | Sfumatura più chiara per 4,5:1 | Hex | Rapporto | Sfumatura più chiara per 3:1 |
|---|---|---|---|---|
| red | 600 | #e7000b | 4.77:1 | 500 |
| orange | 700 | #ca3500 | 5.22:1 | 600 |
| amber | 700 | #bb4d00 | 5.03:1 | 600 |
| yellow | 700 | #a65f00 | 4.93:1 | 700 |
| lime | 700 | #497d00 | 4.98:1 | 600 |
| green | 700 | #008236 | 4.95:1 | 600 |
| emerald | 700 | #007a55 | 5.36:1 | 600 |
| teal | 700 | #00786f | 5.36:1 | 600 |
| cyan | 700 | #007595 | 5.28:1 | 600 |
| sky | 700 | #0069a8 | 5.86:1 | 600 |
| blue | 600 | #155dfc | 5.25:1 | 500 |
| indigo | 500 | #615fff | 4.58:1 | 400 |
| violet | 600 | #7f22fe | 5.89:1 | 500 |
| purple | 600 | #9810fa | 5.54:1 | 500 |
| fuchsia | 600 | #c800de | 4.66:1 | 500 |
| pink | 600 | #e60076 | 4.54:1 | 500 |
| rose | 600 | #ec003f | 4.53:1 | 500 |
| gray | 500 | #6a7282 | 4.84:1 | 500 |
| olive | 600 | #5b5b4b | 6.90:1 | 500 |
Tutte le scale neutre tranne olive passano al 500. Olive-500 ha una luminosità del 58% con una tinta giallastra e arriva solo a 4,25:1, quindi il testo gray-500 e il testo olive-500 non sono intercambiabili.
Colori di Tailwind v3 e v4 a confronto
La v3 definiva i colori come valori hex in tailwind.config.js sotto theme.extend.colors. La v4 sposta la configurazione nel CSS: i colori sono variabili del tema dentro @theme, scritte in OKLCH ed esposte come variabili CSS, quindi var(--color-blue-500) funziona nel CSS normale e negli stili inline.
La palette è stata ricalibrata, non ridisegnata. Convertito in OKLCH, blue-500 della v3 (#3b82f6) ha esattamente la stessa luminosità e la stessa tinta di blue-500 della v4. È salita solo la croma, da 0,188 a 0,214. Il resto della scala blue segue lo stesso schema, tranne blue-400, che è diventato anche più scuro di 0,7 punti. Il contrasto cambia appena, mentre i colori appaiono più vivaci.
Quella croma in più va oltre sRGB. 94 dei 286 colori della v4 sono fuori da sRGB e dentro Display P3, tutti cromatici. La scala orange ha 9 sfumature su 11 fuori, la scala blue 4 (da 200 a 500). Su uno schermo P3 vedi il colore pieno, su uno schermo sRGB il browser ne mostra uno vicino. La v4 punta a Safari 16.4, Chrome 111 e Firefox 128 o successivi, che supportano tutti oklch().
| Classe | Hex v3 | Fallback hex v4 | Croma v3 → v4 | Sul bianco v3 → v4 |
|---|---|---|---|---|
| blue-400 | #60a5fa | #51a2ff | 0.143 → 0.165 | 2.54 → 2.64 |
| blue-500 | #3b82f6 | #2b7fff | 0.188 → 0.214 | 3.68 → 3.76 |
| blue-600 | #2563eb | #155dfc | 0.215 → 0.245 | 5.17 → 5.25 |
| blue-700 | #1d4ed8 | #1447e6 | 0.217 → 0.243 | 6.70 → 6.83 |
CSS
@theme {
--color-blue-500: oklch(62.3% 0.214 259.815);
}
.card {
border-color: var(--color-blue-500);
}Come aggiungere colori personalizzati in Tailwind v4
Dichiara una variabile nel namespace --color- dentro @theme. La parte dopo --color- diventa il nome della classe, quindi --color-brand ti dà bg-brand, text-brand, border-brand, ring-brand e tutte le altre utility di colore, più var(--color-brand) nel CSS. Sono accettati hex, rgb(), hsl() e oklch().
Per sostituire la palette predefinita invece di estenderla, azzera prima il namespace con --color-*: initial, poi definisci solo i colori che ti servono. Le utility vengono generate solo per le classi che usi davvero, quindi la maggior parte dei progetti tiene i colori predefiniti.
CSS
@import 'tailwindcss';
@theme {
--color-brand: #e4572e;
--color-ink: oklch(21% 0.02 260);
}Un singolo --color-brand va bene per un solo colore d’accento. Appena ti servono stati hover, sfondi tenui o la modalità scura, definisci una scala completa con sfumature numerate.
Come creare una scala personalizzata completa da 50 a 950
La scala qui sotto è stata generata da #e4572e. La sua luminosità del 63,7% corrisponde alla sfumatura 500, quindi il colore del brand resta esattamente al 500. Le altre sfumature seguono la curva di luminosità di Tailwind e mantengono la stessa tinta; la croma raggiunge il massimo tra 500 e 600 e cala verso entrambi gli estremi, e tutte le sfumature rientrano in sRGB, quindi i valori hex sono esatti.
Come le tinte calde di Tailwind, questa scala richiede il 600 per il testo normale sul bianco. Brand-500 dà 3,68:1, sufficiente solo per testo grande e icone.
| Classe | Hex | Sul bianco |
|---|---|---|
| brand-50 | #fcf3f0 | 1.09:1 |
| brand-100 | #fae4de | 1.22:1 |
| brand-200 | #f8cec3 | 1.44:1 |
| brand-300 | #f3ae9a | 1.85:1 |
| brand-400 | #ed7d5e | 2.73:1 |
| brand-500 | #e4572e | 3.68:1 |
| brand-600 | #ce3a00 | 4.97:1 |
| brand-700 | #ae3000 | 6.52:1 |
| brand-800 | #912600 | 8.46:1 |
| brand-900 | #77260e | 10.15:1 |
| brand-950 | #441508 | 15.48:1 |
CSS
@theme {
--color-brand-50: oklch(97% 0.01103 36.478);
--color-brand-100: oklch(93.477% 0.02574 36.478);
--color-brand-200: oklch(88.485% 0.04964 36.478);
--color-brand-300: oklch(81.145% 0.08641 36.478);
--color-brand-400: oklch(71.064% 0.14524 36.478);
--color-brand-500: oklch(63.723% 0.18385 36.478);
--color-brand-600: oklch(56.583% 0.19167 36.478);
--color-brand-700: oklch(49.952% 0.16921 36.478);
--color-brand-800: oklch(43.729% 0.14814 36.478);
--color-brand-900: oklch(38.935% 0.11766 36.478);
--color-brand-950: oklch(27% 0.07538 36.478);
}Quando incolli, mantieni la precisione completa. Arrotondare la luminosità allo 0,1% e la croma a tre decimali spinge brand-600 appena fuori da sRGB: non è un problema, ma non corrisponde più esattamente all’hex.
Come funzionano i modificatori di opacità come bg-blue-500/50
Una barra dopo il colore ne imposta l’alfa: bg-blue-500/50 è blue-500 al 50%. La v3 lo compilava in rgb(59 130 246 / 0.5), che funzionava solo con i colori che Tailwind poteva scomporre in canali. I colori personalizzati definiti come variabili CSS richiedevano un formato speciale rgb(var(--brand) / <alpha-value>).
La v4 compila il modificatore in color-mix() in Oklab, mescolando il colore con transparent. Funziona con qualsiasi colore: variabili del tema, valori arbitrari come bg-[#e4572e]/50 e le tue variabili CSS.
L’opacità cambia il contrasto. Sul bianco, blue-500/50 viene reso come #95bfff e blue-500/10 come #eaf2ff. Il testo in blue-600 si legge con 5,25:1, ma text-blue-600/60 scende a 2,62:1 e fallisce anche per il testo grande.
- blue-500#2b7fff
- blue-500/50 sul bianco#95bfff
- blue-500/20 sul bianco#d5e5ff
- blue-500/10 sul bianco#eaf2ff
CSS
.bg-blue-500\/50 {
background-color: color-mix(in oklab, var(--color-blue-500) 50%, transparent);
}Come trovare la classe Tailwind più vicina a qualsiasi hex
Confronta l’hex con tutte le 286 sfumature in base alla distanza percettiva in Oklab (ΔEOK). Sotto circa 0,02 la differenza è difficile da vedere affiancando i due colori, quindi la classe Tailwind può sostituire il tuo colore. Sopra circa 0,04 conviene invece aggiungere un colore personalizzato.
La tabella mostra corrispondenze reali. I vecchi valori hex della v3 riportano alla stessa classe della v4, mentre un tipico arancione di brand come #ff5733 cade tra orange-600 e red-400. La pagina Tailwind di PickShade fa questa ricerca per qualsiasi colore e mostra le tre classi più vicine.
| Il tuo colore | Classe v4 più vicina | Fallback della classe | ΔEOK |
|---|---|---|---|
| #635bff | indigo-500 | #615fff | 0.008 |
| #1da1f2 | sky-500 | #00a6f4 | 0.020 |
| #10b981 | emerald-500 | #00bc7d | 0.021 |
| #3b82f6 | blue-500 | #2b7fff | 0.026 |
| #e4572e | orange-600 | #f54900 | 0.042 |
| #ff5733 | orange-600 | #f54900 | 0.046 |
Domande e risposte
Quanti colori ha Tailwind CSS?
Tailwind CSS v4.3 ha 26 scale di colore con 11 sfumature ciascuna, da 50 a 950, per un totale di 286 colori più black e white. Diciassette scale sono cromatiche e nove sono neutre: slate, gray, zinc, neutral, stone, mauve, olive, mist e taupe.
Qual è il codice hex di blue-500 in Tailwind?
In Tailwind v4, blue-500 è oklch(62.3% 0.214 259.815), leggermente fuori da sRGB; l’hex più vicino è #2b7fff. In Tailwind v3, blue-500 era #3b82f6, con la stessa luminosità e la stessa tinta ma una croma più bassa.
Come aggiungo colori personalizzati in Tailwind v4?
Aggiungi una variabile nel namespace --color- dentro @theme nel tuo CSS, per esempio @theme { --color-brand-500: oklch(63.7% 0.184 36.48); }. Tailwind genera allora bg-brand-500, text-brand-500 e tutte le altre utility di colore, e il valore è disponibile come var(--color-brand-500).
Quali colori di Tailwind sono accessibili su sfondo bianco?
Per il testo normale a 4,5:1 sul bianco, usa il 600 per red, blue, violet, purple, fuchsia, pink e rose, il 700 per orange, amber, yellow, lime, green, emerald, teal, cyan e sky, e il 500 per indigo e per la maggior parte delle scale neutre. Tra le neutre fa eccezione olive, che richiede il 600.
Perché i colori di Tailwind v4 sembrano più saturi della v3?
Tailwind v4 definisce i colori in OKLCH e ne ha aumentato la croma. Nella scala blue, per esempio, luminosità e tinta sono rimaste quasi identiche alla v3, mentre la croma delle sfumature centrali è aumentata di 0,02-0,03. 94 dei 286 colori ora sono fuori da sRGB e usano il gamut più ampio Display P3, quindi appaiono più vivaci sugli schermi P3 come quelli degli iPhone e dei Mac recenti.
Posso usare colori hex in @theme di Tailwind v4?
Sì. Le variabili del tema accettano qualsiasi colore CSS, inclusi hex, rgb(), hsl() e oklch(). I modificatori di opacità funzionano con tutti perché la v4 li costruisce con color-mix().