Przejdź do próbnika kolorów

Kolory Tailwind CSS: paleta OKLCH w v4, własne kolory i odcienie

Tailwind CSS v4 ma 26 skal kolorów po 11 odcieni, od 50 do 950, czyli 286 kolorów zdefiniowanych w OKLCH jako zmienne CSS, np. --color-blue-500. Własne dodajesz przez @theme { --color-brand-500: oklch(...) }. Ten sam numer stopnia nie oznacza tej samej jasności: blue-600 to najjaśniejszy niebieski, który daje 4,5:1 na białym, a żółty potrzebuje 700.

6 min czytania

Jak zbudowana jest paleta kolorów Tailwind

Domyślna paleta w Tailwind v4.3 ma 26 nazwanych skal. Siedemnaście jest chromatycznych: red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink i rose. Dziewięć to neutralne: slate, gray, zinc, neutral i stone z v3 oraz mauve, olive, mist i taupe dodane w v4. Do tego dochodzą black i white.

Każda skala ma te same 11 stopni: 50, 100, 200 i dalej aż do 900 oraz 950. 50 to prawie biel, 950 to prawie czerń. Klasa to narzędzie plus kolor i stopień: bg-blue-500, text-rose-700, border-zinc-200.

Numer stopnia to pozycja w skali, a nie wartość jasności. Stopień 500 ma od 55,1% jasności OKLCH w gray do 79,5% w yellow, dlatego yellow-500 i blue-500 zachowują się jako kolory tekstu zupełnie inaczej.

KlasaWartość OKLCHZamiennik hexKontrast na białym
yellow-500oklch(79.5% 0.184 86.047)#efb1001.92:1
amber-500oklch(76.9% 0.188 70.08)#fd9a002.14:1
green-500oklch(72.3% 0.219 149.579)#00c9502.22:1
cyan-500oklch(71.5% 0.143 215.221)#00b8db2.37:1
orange-500oklch(70.5% 0.213 47.604)#ff69002.89:1
red-500oklch(63.7% 0.237 25.331)#fb2c363.81:1
blue-500oklch(62.3% 0.214 259.815)#2b7fff3.76:1
indigo-500oklch(58.5% 0.233 277.117)#615fff4.58:1
gray-500oklch(55.1% 0.027 264.364)#6a72824.84:1

Niebieski w Tailwind: każdy odcień z OKLCH, hex i kontrastem

Oto pełna skala blue w definicji Tailwind v4. Kolumna hex to najbliższy kolor sRGB, znaleziony przez obniżanie chromy przy zachowaniu jasności i barwy. Współczynniki kontrastu to wartości WCAG 2 zmierzone dla tego hex.

Blue-600 to pierwszy stopień, który daje 4,5:1 dla tekstu podstawowego na białym. Blue-500 przechodzi na czarnym z wynikiem 5,58:1, ale na białym ma tylko 3,76:1. Żaden stopień niebieskiego nie osiąga 4,5:1 na obu tłach, więc jasny i ciemny motyw potrzebują różnych stopni.

KlasaWartość OKLCHZamiennik hexNa białymNa czarnym
blue-50oklch(97% 0.014 254.604)#eff6ff1.09:119.30:1
blue-100oklch(93.2% 0.032 255.585)#dbeafe1.22:117.21:1
blue-200oklch(88.2% 0.059 254.128)#bedbff1.42:114.77:1
blue-300oklch(80.9% 0.105 251.813)#8ec5ff1.81:111.58:1
blue-400oklch(70.7% 0.165 254.624)#51a2ff2.64:17.96:1
blue-500oklch(62.3% 0.214 259.815)#2b7fff3.76:15.58:1
blue-600oklch(54.6% 0.245 262.881)#155dfc5.25:14.00:1
blue-700oklch(48.8% 0.243 264.376)#1447e66.83:13.07:1
blue-800oklch(42.4% 0.199 265.638)#193cb88.82:12.38:1
blue-900oklch(37.9% 0.146 265.522)#1c398e10.37:12.03:1
blue-950oklch(28.2% 0.091 267.935)#16245614.78:11.42:1

Które odcienie Tailwind przechodzą WCAG AA na białym

Najjaśniejszy stopień, który przechodzi, zależy od barwy. Orange, amber, yellow, lime oraz skale zielone, morskie, cyjanowe i błękitne są na 500 wciąż jasne, więc do tekstu podstawowego potrzebują 700. Red, blue, violet, purple, fuchsia, pink i rose przechodzą od 600, indigo już od 500. Wyjątkiem jest yellow: nawet yellow-600 nie spełnia progu dla dużego tekstu, ma 2,93:1.

Jasność przewiduje wynik lepiej niż numer stopnia. Spośród wszystkich 286 kolorów każdy odcień z jasnością OKLCH poniżej 58% daje 4,5:1 na białym, a każdy powyżej 59,2% nie daje. Odczytaj L z wartości klasy, a odpowiedź znasz jeszcze przed testem.

KolorNajjaśniejszy stopień dla 4.5:1HexKontrastNajjaśniejszy stopień dla 3:1
red600#e7000b4.77:1500
orange700#ca35005.22:1600
amber700#bb4d005.03:1600
yellow700#a65f004.93:1700
lime700#497d004.98:1600
green700#0082364.95:1600
emerald700#007a555.36:1600
teal700#00786f5.36:1600
cyan700#0075955.28:1600
sky700#0069a85.86:1600
blue600#155dfc5.25:1500
indigo500#615fff4.58:1400
violet600#7f22fe5.89:1500
purple600#9810fa5.54:1500
fuchsia600#c800de4.66:1500
pink600#e600764.54:1500
rose600#ec003f4.53:1500
gray500#6a72824.84:1500
olive600#5b5b4b6.90:1500

Wszystkie neutralne oprócz olive przechodzą od 500. Olive-500 ma 58% jasności i żółtawą barwę, osiąga tylko 4,25:1, więc tekst w gray-500 i w olive-500 nie jest wymienny.

Kolory Tailwind v3 a v4

W v3 kolory były wartościami hex w tailwind.config.js pod theme.extend.colors. v4 przenosi konfigurację do CSS: kolory to zmienne motywu wewnątrz @theme, zapisane w OKLCH i udostępnione jako zmienne CSS, więc var(--color-blue-500) działa w zwykłym CSS i w stylach inline.

Samą paletę dostrojono, a nie narysowano od nowa. Po konwersji do OKLCH blue-500 z v3 (#3b82f6) ma dokładnie tę samą jasność i barwę co blue-500 z v4. Wzrosła tylko chroma, z 0,188 do 0,214. Reszta skali blue wygląda tak samo, z wyjątkiem blue-400, który dodatkowo ściemniał o 0,7 punktu. Kontrast prawie się nie zmienia, a kolory wyglądają żywiej.

Ta dodatkowa chroma wychodzi poza sRGB. 94 z 286 kolorów v4 leży poza sRGB, a wewnątrz Display P3, i wszystkie są chromatyczne. Orange ma poza sRGB 9 z 11 stopni, blue ma 4 (od 200 do 500). Na ekranie P3 widzisz pełny kolor, na ekranie sRGB przeglądarka pokazuje najbliższy. v4 celuje w Safari 16.4, Chrome 111 i Firefox 128 lub nowsze, a wszystkie rozumieją oklch().

KlasaHex w v3Zamiennik hex w v4Chroma v3 → v4Na białym v3 → v4
blue-400#60a5fa#51a2ff0.143 → 0.1652.54 → 2.64
blue-500#3b82f6#2b7fff0.188 → 0.2143.68 → 3.76
blue-600#2563eb#155dfc0.215 → 0.2455.17 → 5.25
blue-700#1d4ed8#1447e60.217 → 0.2436.70 → 6.83

CSS

@theme {
    --color-blue-500: oklch(62.3% 0.214 259.815);
}

.card {
    border-color: var(--color-blue-500);
}

Jak dodać własne kolory w Tailwind v4

Zadeklaruj zmienną w przestrzeni nazw --color- wewnątrz @theme. Część po --color- staje się nazwą klasy, więc --color-brand daje bg-brand, text-brand, border-brand, ring-brand i każde inne narzędzie koloru, a do tego var(--color-brand) w CSS. Akceptowane są hex, rgb(), hsl() i oklch().

Żeby zastąpić domyślną paletę zamiast ją rozszerzać, najpierw wyzeruj przestrzeń nazw przez --color-*: initial, a potem zdefiniuj tylko potrzebne kolory. Narzędzia powstają wyłącznie dla klas, których faktycznie używasz, więc większość projektów zostawia domyślne.

CSS

@import 'tailwindcss';

@theme {
    --color-brand: #e4572e;
    --color-ink: oklch(21% 0.02 260);
}

Jedno --color-brand wystarczy na pojedynczy akcent. Gdy tylko potrzebujesz stanów hover, przyciemnionych teł albo ciemnego motywu, zdefiniuj pełną skalę z numerowanymi stopniami.

Jak zbudować pełną własną skalę od 50 do 950

Poniższą skalę wygenerowano z #e4572e. Jej jasność 63,7% odpowiada stopniowi 500, więc kolor marki zostaje dokładnie na 500. Pozostałe stopnie idą za krzywą jasności Tailwinda i zachowują tę samą barwę, chroma osiąga szczyt na 500 i 600 i maleje ku obu końcom, a wszystkie stopnie mieszczą się w sRGB, więc wartości hex są dokładne.

Tak jak ciepłe barwy samego Tailwinda, ta skala potrzebuje 600 do tekstu podstawowego na białym. Brand-500 daje 3,68:1, co wystarcza tylko do dużego tekstu i ikon.

KlasaHexNa białym
brand-50#fcf3f01.09:1
brand-100#fae4de1.22:1
brand-200#f8cec31.44:1
brand-300#f3ae9a1.85:1
brand-400#ed7d5e2.73:1
brand-500#e4572e3.68:1
brand-600#ce3a004.97:1
brand-700#ae30006.52:1
brand-800#9126008.46:1
brand-900#77260e10.15:1
brand-950#44150815.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);
}

Przy wklejaniu zachowaj pełną precyzję. Zaokrąglenie jasności do 0,1% i chromy do trzech miejsc po przecinku wypycha brand-600 tuż poza sRGB, co nie szkodzi, ale kolor przestaje dokładnie odpowiadać wartości hex.

Jak działają modyfikatory przezroczystości, np. bg-blue-500/50

Ukośnik po kolorze ustawia jego kanał alfa: bg-blue-500/50 to blue-500 przy 50%. v3 kompilował to do rgb(59 130 246 / 0.5), co działało tylko dla kolorów, które Tailwind potrafił rozbić na kanały. Własne kolory zdefiniowane jako zmienne CSS wymagały specjalnego formatu rgb(var(--brand) / <alpha-value>).

v4 kompiluje modyfikator do color-mix() w Oklab, mieszając kolor z transparent. To działa z każdym kolorem: zmiennymi motywu, dowolnymi wartościami, np. bg-[#e4572e]/50, i twoimi własnymi zmiennymi CSS.

Przezroczystość zmienia kontrast. Na białym blue-500/50 wyświetla się jako #95bfff, a blue-500/10 jako #eaf2ff. Tekst w blue-600 ma 5,25:1, ale text-blue-600/60 spada do 2,62:1 i nie przechodzi nawet dla dużego tekstu.

CSS

.bg-blue-500\/50 {
    background-color: color-mix(in oklab, var(--color-blue-500) 50%, transparent);
}

Jak znaleźć najbliższą klasę Tailwind dla dowolnego hex

Porównaj hex ze wszystkimi 286 odcieniami według odległości percepcyjnej w Oklab (ΔEOK). Poniżej około 0,02 różnicę trudno zauważyć przy zestawieniu obok siebie, więc klasa Tailwind może zastąpić twój kolor. Powyżej około 0,04 lepiej dodać własny kolor.

Tabela pokazuje prawdziwe dopasowania. Stare wartości hex z v3 trafiają do tej samej klasy w v4, a typowy pomarańczowy marki, np. #ff5733, wypada między orange-600 a red-400. Strona Tailwind w PickShade robi to wyszukiwanie dla dowolnego koloru i pokazuje trzy najbliższe klasy.

Twój kolorNajbliższa klasa v4Hex klasyΔEOK
#635bffindigo-500#615fff0.008
#1da1f2sky-500#00a6f40.020
#10b981emerald-500#00bc7d0.021
#3b82f6blue-500#2b7fff0.026
#e4572eorange-600#f549000.042
#ff5733orange-600#f549000.046

Pytania i odpowiedzi

Ile kolorów ma Tailwind CSS?

Tailwind CSS v4.3 ma 26 skal kolorów po 11 odcieni, od 50 do 950, co daje 286 kolorów oraz black i white. Siedemnaście skal jest chromatycznych, a dziewięć neutralnych: slate, gray, zinc, neutral, stone, mauve, olive, mist i taupe.

Jaki jest kod hex koloru blue-500 w Tailwind?

W Tailwind v4 blue-500 to oklch(62.3% 0.214 259.815), co leży nieco poza sRGB; najbliższy hex to #2b7fff. W Tailwind v3 blue-500 miał wartość #3b82f6, z tą samą jasnością i barwą, ale niższą chromą.

Jak dodać własne kolory w Tailwind v4?

Dodaj zmienną w przestrzeni nazw --color- wewnątrz @theme w swoim CSS, na przykład @theme { --color-brand-500: oklch(63.7% 0.184 36.48); }. Tailwind wygeneruje wtedy bg-brand-500, text-brand-500 i każde inne narzędzie koloru, a wartość będzie dostępna jako var(--color-brand-500).

Które kolory Tailwind są dostępne na białym tle?

Dla tekstu podstawowego z kontrastem 4,5:1 na białym użyj 600 dla red, blue, violet, purple, fuchsia, pink i rose, 700 dla orange, amber, yellow, lime, green, emerald, teal, cyan i sky oraz 500 dla indigo i większości neutralnych. Wśród neutralnych wyjątkiem jest olive, który potrzebuje 600.

Dlaczego kolory Tailwind v4 wyglądają na bardziej nasycone niż w v3?

Tailwind v4 definiuje kolory w OKLCH i podniósł ich chromę. Na przykład w skali blue jasność i barwa zostały prawie dokładnie takie jak w v3, a chroma środkowych stopni wzrosła o 0,02–0,03. 94 z 286 kolorów leży teraz poza sRGB i korzysta z szerszej przestrzeni Display P3, więc wyglądają żywiej na ekranach P3, takich jak nowe iPhone’y i Maki.

Czy w @theme w Tailwind v4 można używać kolorów hex?

Tak. Zmienne motywu przyjmują dowolny kolor CSS, w tym hex, rgb(), hsl() i oklch(). Modyfikatory przezroczystości działają ze wszystkimi, bo v4 buduje je przez color-mix().

Wypróbuj w PickShade

Powiązane poradniki