Culori Tailwind CSS: paleta v4 în OKLCH, culori personalizate și trepte
Tailwind CSS v4 vine cu 26 de scale de culori, fiecare cu 11 trepte de la 50 la 950, în total 286 de culori definite în OKLCH ca variabile CSS de tipul --color-blue-500. Pe ale tale le adaugi cu @theme { --color-brand-500: oklch(...) }. Același număr de treaptă nu înseamnă aceeași luminozitate: blue-600 este cel mai deschis albastru care trece de 4,5:1 pe alb, în timp ce galbenul are nevoie de 700.
Citire: 7 min
Cum este structurată paleta de culori Tailwind
Paleta implicită din Tailwind v4.3 are 26 de scale cu nume. Șaptesprezece sunt cromatice: red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink și rose. Nouă sunt neutre: slate, gray, zinc, neutral și stone din v3, plus mauve, olive, mist și taupe, adăugate pe parcursul v4. Pe deasupra vin black și white.
Fiecare scală are aceleași 11 trepte: 50, 100, 200 până la 900 și 950. 50 este aproape alb, 950 aproape negru. O clasă este formată din utilitar, culoare și treaptă: bg-blue-500, text-rose-700, border-zinc-200.
Numărul treptei este o poziție în scală, nu o valoare de luminozitate. Treapta 500 variază de la 55,1% luminozitate OKLCH la gray până la 79,5% la yellow, de aceea yellow-500 și blue-500 se comportă foarte diferit ca și culori de text.
| Clasă | Valoare OKLCH | Hex de rezervă | Contrast pe alb |
|---|---|---|---|
| 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 |
Albastrul Tailwind: fiecare treaptă cu OKLCH, hex și contrast
Iată scala completă de albastru așa cum o definește Tailwind v4. Coloana hex conține cea mai apropiată culoare sRGB, obținută prin reducerea cromei cu păstrarea luminozității și a nuanței. Rapoartele de contrast sunt valori WCAG 2 măsurate pe acel hex.
Blue-600 este prima treaptă care trece de 4,5:1 pentru textul principal pe alb. Blue-500 trece pe negru cu 5,58:1, dar pică pe alb cu 3,76:1. Nicio treaptă de albastru nu trece de 4,5:1 pe ambele, așa că tema deschisă și cea întunecată au nevoie de trepte diferite.
| Clasă | Valoare OKLCH | Hex de rezervă | Pe alb | Pe negru |
|---|---|---|---|---|
| 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 |
Ce trepte Tailwind trec WCAG AA pe alb
Cea mai deschisă treaptă care trece depinde de nuanță. Orange, amber, yellow, lime și verzii, teal, cyan și sky sunt încă deschise la 500, așa că au nevoie de 700 pentru textul principal. Red, blue, violet, purple, fuchsia, pink și rose trec la 600, iar indigo deja la 500. Yellow este excepția: chiar și yellow-600 pică pentru textul mare, cu 2,93:1.
Luminozitatea prezice rezultatul mai bine decât numărul treptei. Dintre toate cele 286 de culori, fiecare treaptă cu luminozitatea OKLCH sub 58% trece de 4,5:1 pe alb, iar fiecare peste 59,2% pică. Citește L din valoarea clasei și știi răspunsul înainte să testezi.
| Culoare | Cea mai deschisă treaptă pentru 4,5:1 | Hex | Raport | Cea mai deschisă treaptă pentru 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 |
Toate neutrele în afară de olive trec la 500. Olive-500 are 58% luminozitate și o nuanță gălbuie și ajunge doar la 4,25:1, așa că textul gray-500 și textul olive-500 nu sunt interschimbabile.
Culorile Tailwind v3 față de v4
v3 definea culorile ca valori hex în tailwind.config.js, sub theme.extend.colors. v4 mută configurarea în CSS: culorile sunt variabile de temă în @theme, scrise în OKLCH și expuse ca variabile CSS, așa că var(--color-blue-500) funcționează în CSS obișnuit și în stilurile inline.
Paleta în sine a fost reglată, nu redesenată. Convertit în OKLCH, blue-500 din v3 (#3b82f6) are exact aceeași luminozitate și nuanță ca blue-500 din v4. A crescut doar croma, de la 0,188 la 0,214. Restul scalei de albastru urmează același tipar, cu excepția lui blue-400, care s-a și închis cu 0,7 puncte. Contrastul aproape nu se schimbă, iar culorile arată mai vii.
Această cromă în plus trece dincolo de sRGB. 94 dintre cele 286 de culori v4 sunt în afara sRGB și în interiorul Display P3, toate cromatice. Orange are 9 din 11 trepte în afară, blue are 4 (de la 200 la 500). Pe un ecran P3 vezi culoarea completă, pe un ecran sRGB browserul afișează una apropiată. v4 țintește Safari 16.4, Chrome 111 și Firefox 128 sau mai noi, care înțeleg toate oklch().
| Clasă | Hex v3 | Hex de rezervă v4 | Croma: v3 → v4 | Pe alb: 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);
}Cum adaugi culori personalizate în Tailwind v4
Declară o variabilă în spațiul de nume --color- din @theme. Partea de după --color- devine numele clasei, așa că --color-brand îți dă bg-brand, text-brand, border-brand, ring-brand și toate celelalte utilitare de culoare, plus var(--color-brand) în CSS. Sunt acceptate hex, rgb(), hsl() și oklch().
Ca să înlocuiești paleta implicită în loc să o extinzi, resetează mai întâi spațiul de nume cu --color-*: initial, apoi definește doar culorile pe care le vrei. Utilitarele se generează doar pentru clasele pe care le folosești efectiv, așa că majoritatea proiectelor păstrează culorile implicite.
CSS
@import 'tailwindcss';
@theme {
--color-brand: #e4572e;
--color-ink: oklch(21% 0.02 260);
}Un singur --color-brand este suficient pentru o culoare de accent. De îndată ce ai nevoie de stări hover, fundaluri nuanțate sau mod întunecat, definește o scală completă cu trepte numerotate.
Cum construiești o scală proprie completă de la 50 la 950
Scala de mai jos a fost generată din #e4572e. Luminozitatea ei de 63,7% corespunde treptei 500, așa că culoarea brandului rămâne exact la 500. Celelalte trepte urmează curba de luminozitate a lui Tailwind, păstrează aceeași nuanță, croma atinge maximul la 500 și 600 și scade spre ambele capete, iar toate încap în sRGB, așa că valorile hex sunt exacte.
La fel ca nuanțele calde ale lui Tailwind, această scală are nevoie de 600 pentru textul principal pe alb. Brand-500 dă 3,68:1, suficient doar pentru text mare și pictograme.
| Clasă | Hex | Pe alb |
|---|---|---|
| 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);
}Păstrează precizia completă când lipești valorile. Rotunjirea luminozității la 0,1% și a cromei la trei zecimale împinge brand-600 puțin în afara sRGB, ceea ce nu strică nimic, dar nu mai corespunde exact cu hex-ul.
Cum funcționează modificatorii de opacitate ca bg-blue-500/50
O bară oblică după culoare îi setează canalul alfa: bg-blue-500/50 este blue-500 la 50%. v3 compila asta în rgb(59 130 246 / 0.5), ceea ce funcționa doar pentru culorile pe care Tailwind le putea descompune în canale. Culorile personalizate definite ca variabile CSS aveau nevoie de un format special rgb(var(--brand) / <alpha-value>).
v4 compilează modificatorul în color-mix() în Oklab, amestecând culoarea cu transparent. Asta funcționează cu orice culoare: variabile de temă, valori arbitrare ca bg-[#e4572e]/50 și propriile tale variabile CSS.
Opacitatea schimbă contrastul. Peste alb, blue-500/50 se afișează ca #95bfff, iar blue-500/10 ca #eaf2ff. Textul blue-600 are 5,25:1, dar text-blue-600/60 scade la 2,62:1 și pică chiar și pentru textul mare.
CSS
.bg-blue-500\/50 {
background-color: color-mix(in oklab, var(--color-blue-500) 50%, transparent);
}Cum găsești cea mai apropiată clasă Tailwind pentru orice hex
Compară hex-ul cu toate cele 286 de trepte după distanța perceptuală în Oklab (ΔEOK). Sub aproximativ 0,02 diferența se vede greu când culorile stau una lângă alta, așa că clasa Tailwind îți poate înlocui culoarea. Peste aproximativ 0,04 adaugă mai bine o culoare personalizată.
Tabelul arată potriviri reale. Valorile hex vechi din v3 revin la aceeași clasă din v4, în timp ce un portocaliu tipic de brand ca #ff5733 cade între orange-600 și red-400. Pagina Tailwind din PickShade face această căutare pentru orice culoare și arată cele mai apropiate trei clase.
| Culoarea ta | Cea mai apropiată clasă v4 | Hex al clasei | Δ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 |
Întrebări și răspunsuri
Câte culori are Tailwind CSS?
Tailwind CSS v4.3 are 26 de scale de culori, fiecare cu 11 trepte de la 50 la 950, adică 286 de culori plus black și white. Șaptesprezece scale sunt cromatice și nouă sunt neutre: slate, gray, zinc, neutral, stone, mauve, olive, mist și taupe.
Care este codul hex al culorii Tailwind blue-500?
În Tailwind v4, blue-500 este oklch(62.3% 0.214 259.815), puțin în afara sRGB; cel mai apropiat hex este #2b7fff. În Tailwind v3, blue-500 era #3b82f6, cu aceeași luminozitate și nuanță, dar cu cromă mai mică.
Cum adaug culori personalizate în Tailwind v4?
Adaugă o variabilă în spațiul de nume --color- din @theme în CSS-ul tău, de exemplu @theme { --color-brand-500: oklch(63.7% 0.184 36.48); }. Tailwind generează apoi bg-brand-500, text-brand-500 și toate celelalte utilitare de culoare, iar valoarea e disponibilă ca var(--color-brand-500).
Ce culori Tailwind sunt accesibile pe fundal alb?
Pentru text principal cu 4,5:1 pe alb, folosește 600 pentru red, blue, violet, purple, fuchsia, pink și rose, 700 pentru orange, amber, yellow, lime, green, emerald, teal, cyan și sky și 500 pentru indigo și majoritatea neutrelor. Olive este excepția dintre neutre și are nevoie de 600.
De ce culorile Tailwind v4 arată mai saturate decât în v3?
Tailwind v4 definește culorile în OKLCH și le-a mărit croma. În scala de albastru, de exemplu, luminozitatea și nuanța au rămas aproape exact ca în v3, în timp ce croma treptelor din mijloc a crescut cu 0,02 până la 0,03. 94 dintre cele 286 de culori sunt acum în afara sRGB și folosesc gama mai largă Display P3, așa că arată mai vii pe ecranele P3, cum sunt iPhone-urile și Mac-urile recente.
Pot folosi culori hex în @theme din Tailwind v4?
Da. Variabilele de temă acceptă orice culoare CSS, inclusiv hex, rgb(), hsl() și oklch(). Modificatorii de opacitate funcționează cu toate, pentru că v4 îi construiește cu color-mix().