Farver i Tailwind CSS: v4-paletten i OKLCH, egne farver og nuancer
Tailwind CSS v4 leveres med 26 farveskalaer på hver 11 nuancer fra 50 til 950, i alt 286 farver defineret i OKLCH som CSS-variabler som --color-blue-500. Egne farver tilføjer du med @theme { --color-brand-500: oklch(...) }. Samme trinnummer betyder ikke samme lyshed: blue-600 er den lyseste blå, der når 4,5:1 på hvid, mens yellow kræver 700.
6 min. læsetid
Sådan er Tailwinds farvepalet bygget op
Standardpaletten i Tailwind v4.3 har 26 navngivne skalaer. Sytten er kulørte: red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink og rose. Ni er neutrale: slate, gray, zinc, neutral og stone fra v3 plus mauve, olive, mist og taupe, der kom til i løbet af v4. Dertil kommer black og white.
Alle skalaer har de samme 11 trin: 50, 100, 200 til og med 900 samt 950. 50 er næsten hvid, 950 er næsten sort. En klasse består af utility-klassen plus farven og trinnet: bg-blue-500, text-rose-700, border-zinc-200.
Trinnummeret er en placering i skalaen, ikke en lyshedsværdi. Trin 500 går fra 55,1 % OKLCH-lyshed i gray til 79,5 % i yellow, og derfor opfører yellow-500 og blue-500 sig meget forskelligt som tekstfarver.
| Klasse | OKLCH-værdi | HEX-fallback | Kontrast på hvid |
|---|---|---|---|
| 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 |
Tailwind blue: alle nuancer med OKLCH, HEX og kontrast
Her er hele den blå skala, som Tailwind v4 definerer den. HEX-kolonnen er den nærmeste farve i sRGB, fundet ved at sænke kroma og bevare lyshed og farvetone. Kontrastforholdene er WCAG 2-værdier målt på den HEX-værdi.
Blue-600 er det første trin, der når 4,5:1 for brødtekst på hvid. Blue-500 består på sort med 5,58:1, men dumper på hvid med 3,76:1. Intet blåt trin når 4,5:1 på begge, så lyse og mørke temaer skal bruge forskellige trin.
| Klasse | OKLCH-værdi | HEX-fallback | På hvid | På sort |
|---|---|---|---|---|
| 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 |
Hvilke Tailwind-nuancer består WCAG AA på hvid
Det lyseste trin, der består, afhænger af farvetonen. Orange, amber, yellow, lime og de grønne, blågrønne, cyan og himmelblå er stadig lyse ved 500, så de skal bruge 700 til brødtekst. Red, blue, violet, purple, fuchsia, pink og rose består ved 600, indigo allerede ved 500. Yellow skiller sig ud: selv yellow-600 dumper til stor tekst med 2,93:1.
Lysheden forudsiger resultatet bedre end trinnummeret. Blandt alle 286 farver når alle nuancer med en OKLCH-lyshed under 58 % 4,5:1 på hvid, og alle over 59,2 % dumper. Aflæs L i klassens værdi, så kender du svaret, før du tester.
| Farve | Lyseste trin til 4,5:1 | HEX | Forhold | Lyseste trin til 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 |
Alle neutrale farver undtagen olive består ved 500. Olive-500 ligger på 58 % lyshed med en gullig farvetone og når kun 4,25:1, så tekst i gray-500 og olive-500 kan ikke bruges i flæng.
Farver i Tailwind v3 og v4
v3 definerede farver som HEX-værdier i tailwind.config.js under theme.extend.colors. v4 flytter konfigurationen ind i CSS: farver er temavariabler i @theme, skrevet i OKLCH og tilgængelige som CSS-variabler, så var(--color-blue-500) virker i almindelig CSS og inline styles.
Selve paletten blev finjusteret, ikke tegnet om. Omregnet til OKLCH har blue-500 fra v3 (#3b82f6) præcis samme lyshed og farvetone som blue-500 i v4. Kun kroma steg, fra 0,188 til 0,214. Resten af den blå skala følger samme mønster, bortset fra blue-400, som også blev 0,7 point mørkere. Kontrasten flytter sig knap, mens farverne ser mere intense ud.
Den ekstra kroma rækker ud over sRGB. 94 af de 286 farver i v4 ligger uden for sRGB og inden for Display P3, og alle er kulørte. Orange har 9 af 11 trin udenfor, blue har 4 (200 til 500). På en P3-skærm ser du hele farven, på en sRGB-skærm viser browseren en farve tæt på. v4 er rettet mod Safari 16.4, Chrome 111 og Firefox 128 eller nyere, som alle forstår oklch().
| Klasse | HEX i v3 | HEX-fallback i v4 | Kroma fra v3 til v4 | På hvid fra v3 til v4 |
|---|---|---|---|---|
| blue-400 | #60a5fa | #51a2ff | 0.143 til 0.165 | 2.54 til 2.64 |
| blue-500 | #3b82f6 | #2b7fff | 0.188 til 0.214 | 3.68 til 3.76 |
| blue-600 | #2563eb | #155dfc | 0.215 til 0.245 | 5.17 til 5.25 |
| blue-700 | #1d4ed8 | #1447e6 | 0.217 til 0.243 | 6.70 til 6.83 |
CSS
@theme {
--color-blue-500: oklch(62.3% 0.214 259.815);
}
.card {
border-color: var(--color-blue-500);
}Sådan tilføjer du egne farver i Tailwind v4
Erklær en variabel i navnerummet --color- inde i @theme. Delen efter --color- bliver klassenavnet, så --color-brand giver dig bg-brand, text-brand, border-brand, ring-brand og alle andre farve-utilities plus var(--color-brand) i CSS. HEX, rgb(), hsl() og oklch() accepteres alle.
Vil du erstatte standardpaletten i stedet for at udvide den, nulstiller du først navnerummet med --color-*: initial og definerer derefter kun de farver, du vil have. Utilities genereres kun for de klasser, du faktisk bruger, så de fleste projekter beholder standardfarverne.
CSS
@import 'tailwindcss';
@theme {
--color-brand: #e4572e;
--color-ink: oklch(21% 0.02 260);
}Én --color-brand er fin til en enkelt accentfarve. Så snart du skal bruge hover-tilstande, tonede baggrunde eller mørk tilstand, bør du definere en hel skala med nummererede trin.
Sådan bygger du en hel skala fra 50 til 950
Skalaen nedenfor er genereret ud fra #e4572e. Dens lyshed på 63,7 % svarer til trin 500, så brandfarven bliver liggende præcis på 500. De andre trin følger Tailwinds lyshedskurve og bevarer farvetonen, kroma topper ved 500 og 600 og aftager mod begge ender, og alle trin ligger inden for sRGB, så HEX-værdierne er præcise.
Ligesom Tailwinds egne varme farvetoner kræver denne skala 600 til brødtekst på hvid. Brand-500 giver 3,68:1, nok til stor tekst og ikoner, men ikke mere.
| Klasse | HEX | På hvid |
|---|---|---|
| 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);
}Behold den fulde præcision, når du indsætter. Afrunder du lysheden til 0,1 % og kroma til tre decimaler, ryger brand-600 lige uden for sRGB. Det er harmløst, men så passer værdien ikke længere præcist med HEX-koden.
Sådan virker opacitetsmodifikatorer som bg-blue-500/50
En skråstreg efter farven angiver dens alfa: bg-blue-500/50 er blue-500 med 50 %. v3 kompilerede det til rgb(59 130 246 / 0.5), som kun virkede for farver, Tailwind kunne dele op i kanaler. Egne farver defineret som CSS-variabler krævede et særligt format: rgb(var(--brand) / <alpha-value>).
v4 kompilerer modifikatoren til color-mix() i Oklab og blander farven med transparent. Det virker med alle farver: temavariabler, vilkårlige værdier som bg-[#e4572e]/50 og dine egne CSS-variabler.
Opacitet ændrer kontrasten. På hvid bliver blue-500/50 til #95bfff og blue-500/10 til #eaf2ff. Tekst i blue-600 giver 5,25:1, men text-blue-600/60 falder til 2,62:1 og dumper selv til stor tekst.
CSS
.bg-blue-500\/50 {
background-color: color-mix(in oklab, var(--color-blue-500) 50%, transparent);
}Sådan finder du den nærmeste Tailwind-klasse til en HEX-farve
Sammenlign HEX-værdien med alle 286 nuancer efter perceptuel afstand i Oklab (ΔEOK). Under omkring 0,02 er forskellen svær at se side om side, så Tailwind-klassen kan erstatte din farve. Over omkring 0,04 bør du i stedet tilføje en egen farve.
Tabellen viser rigtige match. Gamle HEX-værdier fra v3 rammer den samme klasse i v4, mens en typisk orange brandfarve som #ff5733 lander mellem orange-600 og red-400. Tailwind-siden i PickShade laver dette opslag for enhver farve og viser de tre nærmeste klasser.
| Din farve | Nærmeste klasse i v4 | Klassens fallback | Δ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 |
Spørgsmål og svar
Hvor mange farver har Tailwind CSS?
Tailwind CSS v4.3 har 26 farveskalaer med 11 nuancer hver, fra 50 til 950, i alt 286 farver plus black og white. Sytten skalaer er kulørte, og ni er neutrale: slate, gray, zinc, neutral, stone, mauve, olive, mist og taupe.
Hvad er HEX-koden for Tailwind blue-500?
I Tailwind v4 er blue-500 oklch(62.3% 0.214 259.815), som ligger lidt uden for sRGB; den nærmeste HEX-værdi er #2b7fff. I Tailwind v3 var blue-500 #3b82f6, med samme lyshed og farvetone, men lavere kroma.
Hvordan tilføjer jeg egne farver i Tailwind v4?
Tilføj en variabel i navnerummet --color- inde i @theme i din CSS, for eksempel @theme { --color-brand-500: oklch(63.7% 0.184 36.48); }. Tailwind genererer så bg-brand-500, text-brand-500 og alle andre farve-utilities, og værdien er tilgængelig som var(--color-brand-500).
Hvilke Tailwind-farver er tilgængelige på hvid baggrund?
Til brødtekst med 4,5:1 på hvid skal du bruge 600 for red, blue, violet, purple, fuchsia, pink og rose, 700 for orange, amber, yellow, lime, green, emerald, teal, cyan og sky og 500 for indigo og de fleste neutrale. Olive er undtagelsen blandt de neutrale og kræver 600.
Hvorfor ser farverne i Tailwind v4 mere mættede ud end i v3?
Tailwind v4 definerer farverne i OKLCH og har hævet deres kroma. I den blå skala er lyshed og farvetone for eksempel næsten præcis som i v3, mens kroma for de midterste trin er steget med 0,02 til 0,03. 94 af de 286 farver ligger nu uden for sRGB og bruger det bredere farveomfang Display P3, så de ser mere intense ud på P3-skærme som nyere iPhones og Macs.
Kan jeg bruge HEX-farver i @theme i Tailwind v4?
Ja. Temavariabler accepterer enhver CSS-farve, også HEX, rgb(), hsl() og oklch(). Opacitetsmodifikatorer virker med dem alle, fordi v4 bygger dem med color-mix().