Tailwind CSS v4 cheat sheet (doorzoekbaar)

Een doorzoekbare Tailwind CSS v4 cheat sheet: typ een class of een gewoon woord en zie de exacte CSS die v4 genereert, van veelvouden van var(--spacing) tot OKLCH-kleurtokens. Ook behandeld: @theme-tokens, breakpoints, container queries, live flex- en gridvakken, het volledige kleurenpalet, dark mode en de hernoemingen van v3 naar v4.

Dit overzicht behandelt Tailwind CSS v4 (v4.3 is de actuele versie op het moment van schrijven, oktober 2026). Voor elke class ziet u de CSS die v4 werkelijk schrijft. Dat is belangrijk, want v4 heeft veranderd hoe waarden tot stand komen: spacing is een veelvoud van één --spacing-variabele, kleuren zijn --color-*-variabelen in OKLCH, en maten zoals radius, schaduw en tekst komen uit benoemde themavariabelen. Typ in het vak om te filteren. U kunt zoeken op classnamen, op de CSS die ze opleveren en op gewone woorden zoals "center", "gradient" of "sticky".

Alle 243 zichtbaar

ClassCSS-uitvoer in v4
Layout en weergave
blockdisplay: block;
inline-blockdisplay: inline-block;
inlinedisplay: inline;
flexdisplay: flex;
inline-flexdisplay: inline-flex;
griddisplay: grid;
inline-griddisplay: inline-grid;
contentsdisplay: contents;
hiddendisplay: none;
containerwidth: 100%; plus max-width: var(--breakpoint-sm) at sm, and so on for each breakpoint
box-borderbox-sizing: border-box;
box-contentbox-sizing: content-box;
staticposition: static;
relativeposition: relative;
absoluteposition: absolute;
fixedposition: fixed;
stickyposition: sticky;
inset-0inset: calc(var(--spacing) * 0);
inset-x-0inset-inline: calc(var(--spacing) * 0);
top-4top: calc(var(--spacing) * 4); /* 1rem */
-top-2top: calc(var(--spacing) * -2);
left-1/2left: calc(1/2 * 100%);
z-10z-index: 10;
z-50z-index: 50;
isolateisolation: isolate;
overflow-hiddenoverflow: hidden;
overflow-autooverflow: auto;
overflow-x-autooverflow-x: auto;
aspect-videoaspect-ratio: var(--aspect-video); /* 16 / 9 */
aspect-squareaspect-ratio: 1 / 1;
object-coverobject-fit: cover;
object-containobject-fit: contain;
visiblevisibility: visible;
invisiblevisibility: hidden;
sr-onlyposition: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border-width: 0;
Flexbox
flex-rowflex-direction: row;
flex-colflex-direction: column;
flex-row-reverseflex-direction: row-reverse;
flex-wrapflex-wrap: wrap;
flex-nowrapflex-wrap: nowrap;
flex-1flex: 1;
flex-autoflex: auto;
flex-initialflex: 0 auto;
flex-noneflex: none;
growflex-grow: 1;
grow-0flex-grow: 0;
shrink-0flex-shrink: 0;
basis-64flex-basis: calc(var(--spacing) * 64);
basis-1/3flex-basis: calc(1/3 * 100%);
order-2order: 2;
order-firstorder: -9999;
order-lastorder: 9999;
Uitlijning en gap
justify-startjustify-content: flex-start;
justify-centerjustify-content: center;
justify-endjustify-content: flex-end;
justify-betweenjustify-content: space-between;
justify-aroundjustify-content: space-around;
justify-evenlyjustify-content: space-evenly;
items-startalign-items: flex-start;
items-centeralign-items: center;
items-endalign-items: flex-end;
items-baselinealign-items: baseline;
items-stretchalign-items: stretch;
self-centeralign-self: center;
self-endalign-self: flex-end;
content-centeralign-content: center;
place-items-centerplace-items: center;
place-content-centerplace-content: center;
justify-items-centerjustify-items: center;
gap-4gap: calc(var(--spacing) * 4); /* 1rem */
gap-x-6column-gap: calc(var(--spacing) * 6);
gap-y-2row-gap: calc(var(--spacing) * 2);
Grid
grid-cols-3grid-template-columns: repeat(3, minmax(0, 1fr));
grid-cols-12grid-template-columns: repeat(12, minmax(0, 1fr));
grid-cols-[200px_1fr]grid-template-columns: 200px 1fr;
grid-cols-subgridgrid-template-columns: subgrid;
grid-rows-3grid-template-rows: repeat(3, minmax(0, 1fr));
col-span-2grid-column: span 2 / span 2;
col-span-fullgrid-column: 1 / -1;
col-start-2grid-column-start: 2;
row-span-2grid-row: span 2 / span 2;
grid-flow-colgrid-auto-flow: column;
grid-flow-densegrid-auto-flow: dense;
auto-rows-frgrid-auto-rows: minmax(0, 1fr);
auto-cols-maxgrid-auto-columns: max-content;
Spacing
p-4padding: calc(var(--spacing) * 4); /* 1rem */
p-pxpadding: 1px;
p-[13px]padding: 13px;
p-(--card-pad)padding: var(--card-pad);
px-6padding-inline: calc(var(--spacing) * 6);
py-2padding-block: calc(var(--spacing) * 2);
pt-8padding-top: calc(var(--spacing) * 8);
ps-4padding-inline-start: calc(var(--spacing) * 4);
m-0margin: calc(var(--spacing) * 0);
mx-automargin-inline: auto;
mt-6margin-top: calc(var(--spacing) * 6);
-mt-2margin-top: calc(var(--spacing) * -2);
ms-automargin-inline-start: auto;
space-y-4margin-block-end: calc(var(--spacing) * 4) on every child except the last (selector: > :not(:last-child))
space-x-2margin-inline-end: calc(var(--spacing) * 2) on every child except the last
Afmetingen
w-64width: calc(var(--spacing) * 64); /* 16rem */
w-fullwidth: 100%;
w-1/2width: calc(1/2 * 100%);
w-screenwidth: 100vw;
w-fitwidth: fit-content;
w-autowidth: auto;
size-10width: calc(var(--spacing) * 10); height: calc(var(--spacing) * 10);
h-12height: calc(var(--spacing) * 12);
h-dvhheight: 100dvh;
h-screenheight: 100vh;
min-h-screenmin-height: 100vh;
min-w-0min-width: calc(var(--spacing) * 0);
max-w-mdmax-width: var(--container-md); /* 28rem */
max-w-7xlmax-width: var(--container-7xl); /* 80rem */
max-w-prosemax-width: 65ch;
max-w-screen-lgmax-width: var(--breakpoint-lg);
Typografie
text-xsfont-size: var(--text-xs); /* 0.75rem */ line-height: var(--tw-leading, var(--text-xs--line-height));
text-smfont-size: var(--text-sm); /* 0.875rem */ line-height: var(--tw-leading, var(--text-sm--line-height));
text-basefont-size: var(--text-base); /* 1rem */ line-height: var(--tw-leading, var(--text-base--line-height));
text-xlfont-size: var(--text-xl); /* 1.25rem */ line-height: var(--tw-leading, var(--text-xl--line-height));
text-4xlfont-size: var(--text-4xl); /* 2.25rem */ line-height: var(--tw-leading, var(--text-4xl--line-height));
text-sm/6font-size: var(--text-sm); line-height: calc(var(--spacing) * 6);
font-sansfont-family: var(--font-sans);
font-monofont-family: var(--font-mono);
font-mediumfont-weight: var(--font-weight-medium); /* 500 */
font-semiboldfont-weight: var(--font-weight-semibold); /* 600 */
font-boldfont-weight: var(--font-weight-bold); /* 700 */
leading-tightline-height: var(--leading-tight); /* 1.25 */
leading-6line-height: calc(var(--spacing) * 6);
tracking-tightletter-spacing: var(--tracking-tight); /* -0.025em */
tracking-wideletter-spacing: var(--tracking-wide);
text-lefttext-align: left;
text-centertext-align: center;
text-righttext-align: right;
uppercasetext-transform: uppercase;
capitalizetext-transform: capitalize;
italicfont-style: italic;
underlinetext-decoration-line: underline;
no-underlinetext-decoration-line: none;
underline-offset-4text-underline-offset: 4px;
decoration-2text-decoration-thickness: 2px;
truncateoverflow: hidden; text-overflow: ellipsis; white-space: nowrap;
line-clamp-3overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;
text-balancetext-wrap: balance;
text-prettytext-wrap: pretty;
whitespace-nowrapwhite-space: nowrap;
wrap-break-wordoverflow-wrap: break-word; /* added in v4.1 */
tabular-numsfont-variant-numeric: tabular-nums;
antialiased-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
Kleur en achtergronden
text-blue-600color: var(--color-blue-600); /* oklch(54.6% 0.245 262.881) */
bg-whitebackground-color: var(--color-white); /* #fff */
bg-slate-900background-color: var(--color-slate-900);
bg-black/50background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
bg-[#4f98fb]background-color: #4f98fb;
bg-(--brand)background-color: var(--brand);
text-currentcolor: currentColor;
bg-transparentbackground-color: transparent;
border-gray-200border-color: var(--color-gray-200);
fill-currentfill: currentColor;
accent-blue-600accent-color: var(--color-blue-600);
caret-pink-500caret-color: var(--color-pink-500);
bg-linear-to-rbackground-image: linear-gradient(to right in oklab, var(--tw-gradient-stops)); /* simplified */
from-blue-500--tw-gradient-from: var(--color-blue-500); /* first stop */
to-violet-500--tw-gradient-to: var(--color-violet-500);
bg-radialbackground-image: radial-gradient(...stops); /* new in v4 */
bg-coverbackground-size: cover;
bg-centerbackground-position: center;
bg-no-repeatbackground-repeat: no-repeat;
bg-clip-textbackground-clip: text;
Randen, radius, rings en outlines
borderborder-style: var(--tw-border-style); border-width: 1px; /* color is currentColor in v4 */
border-2border-style: var(--tw-border-style); border-width: 2px;
border-tborder-top-style: var(--tw-border-style); border-top-width: 1px;
border-dashed--tw-border-style: dashed; border-style: dashed;
rounded-xsborder-radius: var(--radius-xs); /* 0.125rem */
rounded-smborder-radius: var(--radius-sm); /* 0.25rem */
rounded-mdborder-radius: var(--radius-md); /* 0.375rem */
rounded-lgborder-radius: var(--radius-lg); /* 0.5rem */
rounded-2xlborder-radius: var(--radius-2xl); /* 1rem */
rounded-fullborder-radius: calc(infinity * 1px);
rounded-t-lgborder-top-left-radius: var(--radius-lg); border-top-right-radius: var(--radius-lg);
divide-yborder-bottom-width: 1px on every child except the last (selector: > :not(:last-child))
ring-1box-shadow: 0 0 0 1px currentColor; /* simplified; v4 default ring width is 1px */
ring-3box-shadow: 0 0 0 3px currentColor; /* the old v3 ring */
ring-blue-500--tw-ring-color: var(--color-blue-500);
ring-offset-2--tw-ring-offset-width: 2px;
outlineoutline-style: var(--tw-outline-style); outline-width: 1px;
outline-2outline-style: var(--tw-outline-style); outline-width: 2px;
outline-offset-2outline-offset: 2px;
outline-hiddenoutline: 2px solid transparent; outline-offset: 2px; /* still visible in forced colors */
outline-none--tw-outline-style: none; outline-style: none;
Effecten en filters
shadow-2xsbox-shadow: 0 1px rgb(0 0 0 / 0.05);
shadow-xsbox-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
shadow-smbox-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
shadow-mdbox-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
shadow-lgbox-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
shadow-2xlbox-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
shadow-nonebox-shadow: 0 0 #0000;
inset-shadow-smbox-shadow: inset 0 2px 4px rgb(0 0 0 / 0.05); /* new in v4 */
opacity-50opacity: 50%;
mix-blend-multiplymix-blend-mode: multiply;
blur-smfilter: blur(var(--blur-sm)); /* 8px */
blur-xsfilter: blur(var(--blur-xs)); /* 4px */
backdrop-blur-mdbackdrop-filter: blur(var(--blur-md)); /* 12px, frosted glass */
grayscalefilter: grayscale(100%);
Transities, animatie en transformaties
transitiontransition-property: color, background-color, border-color, outline-color, opacity, box-shadow, transform, translate, scale, rotate, filter and more; transition-duration: 150ms;
transition-colorstransition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke and gradient stops; 150ms
duration-200transition-duration: 200ms;
ease-outtransition-timing-function: var(--ease-out); /* cubic-bezier(0, 0, 0.2, 1) */
animate-spinanimation: var(--animate-spin); /* spin 1s linear infinite */
animate-pulseanimation: var(--animate-pulse);
motion-reduce:animate-none@media (prefers-reduced-motion: reduce) { animation: none; }
scale-95--tw-scale-x: 95%; --tw-scale-y: 95%; scale: var(--tw-scale-x) var(--tw-scale-y);
rotate-45rotate: 45deg;
translate-x-4--tw-translate-x: calc(var(--spacing) * 4); translate: var(--tw-translate-x) var(--tw-translate-y);
-translate-y-1/2--tw-translate-y: calc(calc(1/2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y);
Interactiviteit
cursor-pointercursor: pointer; /* v4 buttons default to cursor: default */
cursor-not-allowedcursor: not-allowed;
pointer-events-nonepointer-events: none;
select-noneuser-select: none;
appearance-noneappearance: none;
scroll-smoothscroll-behavior: smooth;
snap-xscroll-snap-type: x var(--tw-scroll-snap-strictness);
snap-startscroll-snap-align: start;
scroll-mt-20scroll-margin-top: calc(var(--spacing) * 20);
resize-yresize: vertical;
touch-manipulationtouch-action: manipulation;
State- en media-varianten
hover:bg-blue-700@media (hover: hover) { &:hover { background-color: var(--color-blue-700); } }
focus-visible:outline-2&:focus-visible { outline-width: 2px; ... }
active:scale-95&:active { scale: 95%; }
disabled:opacity-50&:disabled { opacity: 50%; }
aria-disabled:opacity-50&[aria-disabled="true"] { opacity: 50%; }
group-hover:underline.group:hover & { text-decoration-line: underline; } (inside @media (hover: hover))
peer-checked:bg-blue-600.peer:checked ~ & { background-color: var(--color-blue-600); }
md:flex@media (width >= 48rem) { display: flex; }
max-md:hidden@media (width < 48rem) { display: none; }
@md:flex-row@container (width >= 28rem) { flex-direction: row; }
dark:bg-slate-900@media (prefers-color-scheme: dark) { background-color: var(--color-slate-900); }
print:hidden@media print { display: none; }
motion-safe:animate-spin@media (prefers-reduced-motion: no-preference) { ... }
*:p-2:where(& > *) { padding: calc(var(--spacing) * 2); }
not-last:mb-2&:not(:last-child) { margin-bottom: ... }
supports-[display:grid]:grid@supports (display: grid) { display: grid; }
bg-red-500!background-color: var(--color-red-500) !important;

Zo leest u de tabel: calc(var(--spacing) * 4) is 1rem, omdat de standaardwaarde van --spacing 0.25rem is. Wijzig die ene variabele in @theme en elke padding, margin, gap, breedte en hoogte die de getallenschaal gebruikt, verandert mee. Waar de gegenereerde CSS lang is (gradients, rings, transities), toont de tabel een vereenvoudigde versie en staat dat erbij.

Hoe v4 een class omzet in een waarde

Er zijn in v4 vier manieren om een utility een waarde te geven, en wie weet welke hij gebruikt, begrijpt de meeste verrassingen:

Breuken zoals w-1/2 worden calc(1/2 * 100%), en een opacity-achtervoegsel zoals bg-black/50 wordt een color-mix() met transparent, zodat het met elk kleurformaat werkt.

@theme-tokens (de v4-vervanger van tailwind.config.js)

In v4 configureert u het designsysteem in CSS. Variabelen die u binnen @theme declareert, worden zowel CSS custom properties op :root als de bron voor utility-classes. Het voorvoegsel van de variabele bepaalt welke utilities ermee gevoed worden:

@import "tailwindcss";

@theme {
  --font-display: "Satoshi", sans-serif;   /* font-display */
  --color-brand-500: oklch(65% 0.17 255);  /* bg-brand-500, text-brand-500 ... */
  --breakpoint-3xl: 120rem;                /* 3xl: variant */
  --spacing: 0.25rem;                      /* p-4 = 1rem */
  --radius-card: 0.875rem;                 /* rounded-card */
}
NamespaceVoedtVoorbeeld
--color-*elke kleur-utility (bg, text, border, fill, ring, schaduwkleur...)bg-red-500
--spacingpadding, margin, gap, breedte, hoogte, inset, translatepx-4
--font-*lettertypefamiliefont-sans
--text-*lettergrootte (plus optioneel --text-*--line-height)text-xl
--font-weight-*lettergewichtfont-bold
--tracking-* / --leading-*letterafstand / regelhoogtetracking-wide
--breakpoint-*responsive variantensm:*
--container-*container query-varianten en max-w-*@sm:*, max-w-md
--radius-*hoekradiusrounded-sm
--shadow-*, --inset-shadow-*, --drop-shadow-*schaduwenshadow-md
--blur-*blur en backdrop blurblur-md
--ease-* / --animate-*timingfuncties / animatiesease-out, animate-spin
--perspective-* / --aspect-*3D-perspectief / beeldverhoudingperspective-near, aspect-video

Wilt u een hele standaard-namespace laten vallen, zet die dan eerst op initial, bijvoorbeeld --color-*: initial;, en declareer daarna alleen uw eigen kleuren. Hebt u nog een JavaScript-config, dan kan v4 die laden met @config "./tailwind.config.js";, maar de opties corePlugins, safelist en separator worden niet ondersteund.

Breakpoints

Breakpoints zijn mobile first: een class zonder voorvoegsel geldt op elke breedte, en md:flex geldt vanaf 48rem. v4 schrijft ze met de bereiksyntaxis width >= ....

VoorvoegselMinimale breedteCSSEronder (max-*)
sm:40rem (640px)@media (width >= 40rem)max-sm: = @media (width < 40rem)
md:48rem (768px)@media (width >= 48rem)max-md:
lg:64rem (1024px)@media (width >= 64rem)max-lg:
xl:80rem (1280px)@media (width >= 80rem)max-xl:
2xl:96rem (1536px)@media (width >= 96rem)max-2xl:

Combineer ze om een bereik te raken: md:max-xl:flex geldt alleen vanaf 48rem tot (niet tot en met) 80rem. Voor een eenmalig breakpoint gebruikt u min-[900px]:grid of max-[600px]:hidden. Voeg breakpoints toe of wijzig ze met --breakpoint-* in @theme, en houd ze allemaal in rem, zodat ze juist gesorteerd worden.

Container queries

Container queries zitten in v4 ingebouwd (in v3 was er een plugin voor nodig). Markeer een ouderelement met @container en style de kinderen dan met @sm:, @md: enzovoort. Ze reageren op de breedte van de ouder in plaats van het venster, en dat wilt u voor een kaart die zowel in een zijbalk als in een brede hoofdkolom staat.

<div class="@container">
  <article class="flex flex-col @md:flex-row gap-4">
    <img class="w-full @md:w-48 rounded-lg" src="..." alt="">
    <div>...</div>
  </article>
</div>
VariantContainerbreedteVariantContainerbreedte
@3xs16rem (256px)@2xl42rem (672px)
@2xs18rem (288px)@3xl48rem (768px)
@xs20rem (320px)@4xl56rem (896px)
@sm24rem (384px)@5xl64rem (1024px)
@md28rem (448px)@6xl72rem (1152px)
@lg32rem (512px)@7xl80rem (1280px)
@xl36rem (576px)

Elk ervan compileert naar @container (width >= ...). Gebruik @max-md: voor "eronder", combineer @sm:@max-md: voor een bereik, geef containers een naam met @container/sidebar en richt u erop met @md/sidebar:, en gebruik willekeurige maten zoals @min-[475px]:. Let op: de containermaten zijn niet dezelfde getallen als de breakpoints: @md is 28rem, terwijl md: 48rem is.

Snel naslagwerk voor flex en grid

Kies hieronder een layout en zie de vakken verschuiven. De classreeks wordt bijgewerkt terwijl u klikt, zodat u hem direct in uw markup kunt kopiëren.

De patronen die u het vaakst nodig hebt:

flex items-center justify-between: navigatiebalk
flex items-center justify-center (of grid place-items-center): één element centreren
grid grid-cols-3 gap-2 met col-span-2
shrink-0 op het vaste element, flex-1 op het element dat de ruimte vult
DoelClasses
Responsief kaartenraster zonder breakpointsgrid grid-cols-[repeat(auto-fill,minmax(16rem,1fr))] gap-6
Zijbalk plus inhoudgrid md:grid-cols-[16rem_1fr] gap-8
Footer vast onderaan een korte paginaflex min-h-dvh flex-col op de wrapper, flex-1 op main
Tekst die wordt afgekapt binnen een flexrijmin-w-0 op het flexkind, truncate op de tekst
Gestapeld op mobiel, naast elkaar op desktopflex flex-col md:flex-row gap-4
Het laatste element naar rechts duwenms-auto (of ml-auto) op dat element

Standaard kleurenpalet (OKLCH), klik om te kopiëren

v4 definieert het standaardpalet in OKLCH, waarmee op wide-gamut-schermen verzadigdere kleuren zichtbaar zijn. Elk staaltje hieronder is geschilderd met de exacte waarde uit het eigen themabestand van Tailwind; klik erop om de oklch()-waarde te kopiëren. De tinten lopen van 50 tot 950. Paletten met een * (mauve, olive, mist en taupe) zijn toegevoegd in v4.2.0 en ontbreken dus in eerdere v4-versies. Zwart en wit zijn #000 en #fff.

Alle 26 zichtbaar
50100200300400500600700800900950
red
orange
amber
yellow
lime
green
emerald
teal
cyan
sky
blue
indigo
violet
purple
fuchsia
pink
rose
slate
gray
zinc
neutral
stone
mauve*
olive*
mist*
taupe*

Gebruik ze als bg-sky-500, text-sky-500/80 of, in uw eigen CSS, var(--color-sky-500). Wilt u weten of een combinatie leesbaar is, haal hem dan door de kleurcontrastchecker, en voor een eigen schaal in hetzelfde formaat probeert u de Tailwind-kleurenpaletgenerator.

Dark mode in v4

Standaard volgt dark: het besturingssysteem via @media (prefers-color-scheme: dark). Wilt u het in plaats daarvan via een class of attribuut aansturen (voor een handmatige schakelaar), overschrijf de variant dan in uw CSS met @custom-variant. Er is geen darkMode-configsleutel meer.

/* Class strategy: <html class="dark"> */
@custom-variant dark (&:where(.dark, .dark *));

/* Or a data attribute: <html data-theme="dark"> */
@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));
<div class="bg-white text-slate-900 dark:bg-slate-900 dark:text-slate-100">...</div>

Bij een handmatige schakelaar zet u de class voordat de pagina wordt getekend (een klein inline script in <head> dat de opgeslagen keuze leest), zodat bezoekers geen flits van het verkeerde thema zien. Een derde optie is dark:-classes helemaal over te slaan: definieer semantische tokens zoals --color-surface in @theme en wissel hun waarden onder .dark, zodat één class als bg-surface in beide thema's werkt.

Van v3 naar v4: hernoemde en gewijzigde classes

Deze komen uit de officiële upgradegids. De hernoemingen zijn het belangrijkst, omdat de oude namen nog bestaan en stilletjes een ander (kleiner) resultaat geven.

v3v4Waarom
shadow-smshadow-xsSchaal één stap omlaag geschoven, zodat elke maat een naam heeft
shadowshadow-smDezelfde verschuiving
drop-shadow-sm / drop-shadowdrop-shadow-xs / drop-shadow-smDezelfde verschuiving
blur-sm / blurblur-xs / blur-smDezelfde verschuiving (ook backdrop-blur-*)
rounded-smrounded-xsDezelfde verschuiving
roundedrounded-smDezelfde verschuiving
outline-noneoutline-hiddenv4 outline-none zet nu echt outline-style: none
ring (3px, blue-500)ring-3 plus een kleurKale ring is nu 1px in currentColor
outline outline-2outline-2Breedte-utilities zetten nu zelf een solid stijl
bg-opacity-50 (en text-, border-, ring-, divide-, placeholder-opacity)bg-black/50Verwijderd; gebruik de slash-modifier
flex-shrink-0 / flex-growshrink-0 / growVerwijderde aliassen
overflow-ellipsistext-ellipsisVerwijderde alias
decoration-slice / decoration-clonebox-decoration-slice / box-decoration-cloneVerwijderde aliassen
bg-[--brand]bg-(--brand)Nieuwe verkorting voor CSS-variabelen
!bg-red-500bg-red-500!Important komt aan het eind (oude vorm verouderd)
first:*:pt-0*:first:pt-0Gestapelde varianten lezen nu van links naar rechts
tw-flex (voorvoegsel)tw:flexVoorvoegsels zien eruit als een variant en komen vooraan

Gedragswijzigingen zonder hernoeming, waar mensen bij upgrades over struikelen:

De officiële tool npx @tailwindcss/upgrade regelt de meeste hernoemingen automatisch. Draai hem op een schone branch en bekijk de diff, want de tool kan niet weten welke shadow-classes er volgens u hetzelfde uit moesten blijven zien.

Dit overzicht afdrukken

Deze pagina heeft printstijlen: de zoekvakken en knoppen worden verborgen, de tabellen krijgen een kleiner lettertype en het kleurenraster houdt de staaltjes bij elkaar. Zet in de meeste browsers "Achtergrondafbeeldingen" aan in het printvenster, anders worden de staaltjes blanco afgedrukt. Hebt u de tabel eerst gefilterd, dan worden alleen de zichtbare rijen afgedrukt. Zo maakt u snel een overzicht van één pagina met alleen de utilities die u gebruikt.

Dezelfde print:-variant werkt in uw eigen projecten: print:hidden op de navigatie, print:text-black op lichte tekst en print:break-inside-avoid op kaarten houden afgedrukte pagina's leesbaar.

Veelgestelde vragen

Waar is tailwind.config.js in Tailwind v4?

v4 wordt in CSS geconfigureerd. U importeert Tailwind met @import "tailwindcss" en declareert designtokens in een @theme-blok, zoals --color-brand-500 of --breakpoint-3xl. Een JavaScript-config kan nog steeds worden geladen met de @config-directive, maar de opties corePlugins, safelist en separator worden niet ondersteund.

Wat zijn de standaard breakpoints in Tailwind v4?

sm is 40rem (640px), md is 48rem (768px), lg is 64rem (1024px), xl is 80rem (1280px) en 2xl is 96rem (1536px). Ze zijn mobile first, dus md:flex geldt vanaf 48rem en breder. Gebruik max-md: voor stijlen onder een breakpoint en combineer ze, zoals md:max-xl:, voor een bereik.

Waarom zien mijn schaduwen en afgeronde hoeken er kleiner uit na de upgrade naar v4?

De schalen voor shadow, radius en blur zijn één stap omlaag geschoven. v3 shadow-sm is v4 shadow-xs, v3 shadow is v4 shadow-sm, v3 rounded-sm is v4 rounded-xs en v3 rounded is v4 rounded-sm. De oude namen compileren nog, dus er komt geen foutmelding; ze leveren gewoon de eerstvolgende kleinere maat op.

Hoe laat ik dark mode in v4 een class gebruiken in plaats van de systeeminstelling?

Voeg @custom-variant dark (&:where(.dark, .dark *)); toe aan uw CSS. dark:-utilities gelden dan zodra een voorouderelement de class dark heeft. Gebruik in plaats daarvan [data-theme=dark] in de selector als u liever een data-attribuut hebt.

Heeft Tailwind v4 een plugin nodig voor container queries?

Nee. Container queries zijn ingebouwd. Zet @container op het ouderelement en gebruik varianten zoals @sm:, @md: en @max-md: op de kinderen. De containermaten beginnen bij @3xs (16rem) en verschillen van de breakpoints van de pagina, zo is @md 28rem.

Waarnaar compileert p-4 in Tailwind v4?

padding: calc(var(--spacing) * 4). Met de standaard --spacing van 0.25rem is dat 1rem (16px bij de standaard lettergrootte). Elk heel getal op de spacingschaal werkt zonder configuratie, en als u --spacing wijzigt, schalen ze allemaal tegelijk mee.

Display

Items

Richting

Omloop

Hoofdas

Kolommen

Dwarsas

Gap

Gekopieerd

Classes kopiëren

Dit overzicht afdrukken

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap