Tailwind CSS v4
Dieses Skill behandelt Tailwind CSS v4.x, wie es auf https://tailwindcss.com/docs dokumentiert ist. v4 wird in CSS konfiguriert, nicht in JavaScript, und viele v3-Klassennamen und Standardwerte haben sich geändert. Das Skill enthält das, was von den Gewohnheiten abweicht: das CSS-first-Setup, überraschende Standardwerte, umbenannte Utilities und die Patterns, die die Dokumentation empfiehlt. Jede Behauptung in den Referenzdateien endet mit der Seite, aus der sie stammt.
Navigation
- Lesen Sie die folgenden Regeln. Sie fangen die häufigsten v3-Gewohnheiten ab, die in v4 brechen.
- Öffnen Sie die eine Referenzdatei, die zur Aufgabe passt, aus der Tabelle am Ende.
- Wenn das Projekt eine
tailwind.config.js,@tailwind-Direktiven oder v3-Klassennamen enthält, oder wenn Sie Code überprüfen, der v3-Gewohnheiten mit sich bringt, lesen Sie zuerstreferences/upgrade-from-v3.md. Der Standard-Migrationspfad istnpx @tailwindcss/upgradein einem neuen Branch, gefolgt von einer Überprüfung des Diffs und einem Test im Browser. https://tailwindcss.com/docs/upgrade-guide#using-the-upgrade-tool
Schnellstart (CSS-first, Vite)
npm install tailwindcss @tailwindcss/vite
// vite.config.ts
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({ plugins: [tailwindcss()] })
/* app.css */
@import "tailwindcss";
@theme {
--color-midnight: #121063;
--font-display: "Oswald", sans-serif;
}
@custom-variant dark (&:where(.dark, .dark *));
- Das gesamte Setup besteht aus einem Paket, einem Plugin und einem
@import "tailwindcss";. Die Installationsschritte verwenden keinetailwind.config.jsund keincontent-Array. https://tailwindcss.com/docs/installation/using-vite - Tailwind durchsucht Quelldateien selbst. Dateien in
.gitignore,node_modules, CSS-Dateien und Sperrdateien werden übersprungen. https://tailwindcss.com/docs/detecting-classes-in-source-files#which-files-are-scanned - Next.js, Angular und andere Nicht-Vite-Bundler verwenden stattdessen das PostCSS-Plugin:
npm install tailwindcss @tailwindcss/postcss postcss, dannplugins: { "@tailwindcss/postcss": {} }. https://tailwindcss.com/docs/installation/using-postcss - Ein
@importfür eine Schriftart-URL (Google Fonts und Ähnliches) steht zuerst, oberhalb von@import "tailwindcss", dann wird die Familie in@themedeklariert. https://tailwindcss.com/docs/font-family#customizing-your-theme @theme-Variablen erstellen Utilities:--color-midnightergibtbg-midnight,text-midnight,fill-midnight, und--font-displayergibtfont-display. https://tailwindcss.com/docs/theme#what-are-theme-variables
Die wichtigsten Regeln
Setup und Konfiguration
- Das PostCSS-Plugin ist
@tailwindcss/postcss, nichttailwindcss. Fügen Sieautoprefixeroderpostcss-importnicht hinzu: Importe und Vendor-Präfixe sind integriert. https://tailwindcss.com/docs/upgrade-guide#using-postcss - In einer Vite-Konfiguration listen die Framework-Anleitungen
tailwindcss()zuerst inplugins, vor dem Framework-Plugin (React Router, SvelteKit, SolidJS, Qwik). Die Dokumentation gibt keine bestimmte Reihenfolge vor. https://tailwindcss.com/docs/installation/framework-guides/react-router https://tailwindcss.com/docs/installation/framework-guides/sveltekit - Anpassen in CSS mit
@theme. Eine JS-Konfiguration wird nicht mehr erkannt und lädt nur über@config "../../tailwind.config.js";, ohnecorePlugins,safelistoderseparator. https://tailwindcss.com/docs/upgrade-guide#using-a-javascript-config-file - Mit
@source inline("{hover:,}bg-red-{50,{100..900..100},950}");in die Safelist aufnehmen. https://tailwindcss.com/docs/detecting-classes-in-source-files#safelisting-specific-utilities - Eine mit Tailwind erstellte Bibliothek innerhalb von
node_moduleswird nicht gescannt: fügen Sie@source "../node_modules/@acmecorp/ui-lib";hinzu (Pfad relativ zum Stylesheet). https://tailwindcss.com/docs/detecting-classes-in-source-files#explicitly-registering-sources - Erstellen Sie Klassennamen niemals dynamisch (
`bg-${color}-600`). Ordnen Sie Werte vollständigen Klassenstrings zu. https://tailwindcss.com/docs/detecting-classes-in-source-files#dynamic-class-names - Ein
<style>-Block in Vue, Svelte oder Astro und ein CSS-Modul werden separat kompiliert. Fügen Sie vor@applydort@reference "../app.css";hinzu, oder verwenden Sie stattdessenvar(--color-blue-500). https://tailwindcss.com/docs/compatibility#explicit-context-sharing https://tailwindcss.com/docs/compatibility#vue-svelte-and-astro - Tailwind v4 ist nicht für die Verwendung mit CSS-Präprozessoren wie Sass, Less oder Stylus konzipiert, daher können sie nicht für Stylesheets oder
<style>-Blöcke in Vue, Svelte oder Astro verwendet werden. https://tailwindcss.com/docs/compatibility#sass-less-and-stylus - v4 benötigt Safari 16.4+, Chrome 111+, Firefox 128+. Bleiben Sie bei älteren Browsern bei v3.4. https://tailwindcss.com/docs/upgrade-guide#browser-requirements
Theme und benutzerdefiniertes CSS
- Wenn eine Theme-Variable eine andere Variable referenziert, schreiben Sie
@theme inline { --font-sans: var(--font-inter); }, andernfalls wird der Wert dort aufgelöst, wo--font-sansdefiniert ist. https://tailwindcss.com/docs/theme#referencing-other-variables - Entfernen Sie einen Standard-Namespace mit
--color-*: initial;, das gesamte Theme mit--*: initial;. https://tailwindcss.com/docs/theme#overriding-the-default-theme - Deklarieren Sie benutzerdefinierte Utilities mit
@utility name { ... }, nicht mit@layer utilities, damit Varianten darauf funktionieren. https://tailwindcss.com/docs/upgrade-guide#adding-custom-utilities - Lesen Sie Theme-Werte in benutzerdefiniertem CSS und JS als CSS-Variablen (
var(--color-red-500)), nicht mittheme(colors.red.500)oderresolveConfig. https://tailwindcss.com/docs/upgrade-guide#theme-values-in-javascript - Verwenden Sie für jeden Breakpoint die gleiche Einheit (rem wie die Standardwerte), sonst überschreiben sich die Breakpoints gegenseitig. https://tailwindcss.com/docs/responsive-design#customizing-your-theme
Klassensyntax
- Die CSS-Variablen-Kurzschreibweise verwendet Klammern:
bg-(--brand-color), nichtbg-[--brand-color]. https://tailwindcss.com/docs/upgrade-guide#variables-in-arbitrary-values text-(--my-var)ist mehrdeutig (Schriftgröße oder Farbe), fügen Sie daher einen Typ-Hinweis hinzu:text-(length:--my-var)odertext-(color:--my-var). Die gleichen Hinweise gibt es fürfont-(family-name:--f),border-(length:--w),bg-(image:--img)undshadow-(color:--c). https://tailwindcss.com/docs/adding-custom-styles#resolving-ambiguities https://tailwindcss.com/docs/font-family https://tailwindcss.com/docs/border-width https://tailwindcss.com/docs/background-image https://tailwindcss.com/docs/box-shadow- Der Important-Modifikator steht am Ende:
bg-red-500!. https://tailwindcss.com/docs/upgrade-guide#the-important-modifier - Gestapelte Varianten werden von links nach rechts angewendet:
*:first:pt-0, nichtfirst:*:pt-0. https://tailwindcss.com/docs/upgrade-guide#variant-stacking-order - Unpräfixierte Klassen zielen auf alle Größen ab.
sm:bedeutet nicht mobil: schreiben Sietext-center sm:text-left. https://tailwindcss.com/docs/responsive-design#targeting-mobile-screens hover:gilt nur auf Geräten, die hoveren können (@media (hover: hover)). Behandeln Sie Hover als eine Verbesserung. https://tailwindcss.com/docs/upgrade-guide#hover-styles-on-mobile
Geänderte Standardwerte
- Border- und Divide-Farben standardmäßig auf
currentColor: setzen Sie immer eine Farbe mitborder. https://tailwindcss.com/docs/upgrade-guide#default-border-color ringist 1pxcurrentColor. Schreiben Siering-3 ring-blue-500für das v3-Aussehen. https://tailwindcss.com/docs/upgrade-guide#default-ring-width-and-color- Fokus-Outlines mit
outline-hiddenausblenden (im forced-colors-Modus beibehalten): v3focus:outline-nonewird zufocus:outline-hidden.outline-noneentfernt die Outline jetzt vollständig. https://tailwindcss.com/docs/upgrade-guide#renamed-outline-utility - Die Skalen haben sich verschoben: v3
shadow-sm,rounded-sm,blur-smsind jetzt-xs, und v3 bloßesshadow,rounded,blursind jetzt-sm. https://tailwindcss.com/docs/upgrade-guide#updated-shadow-radius-and-blur-scales - Verläufe sind
bg-linear-to-r, plusbg-radialundbg-conic-<angle>. https://tailwindcss.com/docs/background-image#adding-a-linear-gradient containerzentriert oder polstert nicht: schreiben Siecontainer mx-auto px-4. https://tailwindcss.com/docs/max-width#using-breakpoints-container- Verwenden Sie für Grids, umbrechende Layouts oder Kinder in einer benutzerdefinierten Reihenfolge
gapanstelle vonspace-x-*undspace-y-*. https://tailwindcss.com/docs/margin#limitations - Buttons haben
cursor: default. https://tailwindcss.com/docs/upgrade-guide#buttons-use-the-default-cursor - Platzhalter verwenden die aktuelle Textfarbe mit 50% Deckkraft. https://tailwindcss.com/docs/upgrade-guide#new-default-placeholder-color
- Display-Klassen überschreiben das
hidden-Attribut nicht mehr: entfernen Siehidden, um das Element anzuzeigen. https://tailwindcss.com/docs/upgrade-guide#hidden-attribute-takes-priority
Dark Mode mit einer Klasse
@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));
// inline im <head>, vor dem Rendern der Seite
document.documentElement.classList.toggle(
"dark",
localStorage.theme === "dark" ||
(!("theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches),
);
Setzen Sie localStorage.theme = "dark" oder "light", und localStorage.removeItem("theme"), um dem System zu folgen. https://tailwindcss.com/docs/dark-mode#with-system-theme-support
Referenzdateien
| Datei | Lesen Sie dies, wenn |
|---|---|
| references/installation-and-frameworks.md | Tailwind installieren, Vite, PostCSS oder CLI auswählen, frameworkspezifische Schritte, CSS-Module, Editor-Tooling |
| references/upgrade-from-v3.md | Ein v3-Projekt migrieren, Code mit v3-Klassennamen oder -Konfiguration überprüfen |
| references/utilities-and-variants.md | Klassen schreiben: beliebige Werte, Konflikte, Zustandsvarianten, group und peer, responsive, Container Queries, Dark Mode |
| references/theme-and-colors.md | Farben, Schriftarten, Breakpoints, Abstände, Animationen, Theme-Namespaces hinzufügen oder überschreiben |
| references/custom-styles.md | Basis-Stile, Preflight, Komponentenklassen, @utility, funktionale Utilities, @custom-variant, @variant |
| references/directives-and-source-detection.md | @apply, @reference, --alpha(), --spacing(), @config, @plugin, @source, Importoptionen (Präfix, important, source) |
| references/layout-flexbox-grid.md | Display, Position, inset, z-index, columns, flex, grid, Ausrichtung und -safe-Ausrichtung |
| references/spacing-and-sizing.md | Padding, Margin, space, width, height, size, container scale, Viewport-Einheiten, logische Größen |
| references/typography.md | Schriftarten, Schriftgröße und Zeilenhöhe, Buchstabenabstand, Textumbruch, Überlaufumbruch, Dekoration, Inhalt |
| references/backgrounds-and-borders.md | Verläufe, Hintergrundbild, -größe und -position, Radius, Randbreite und -farbe, Outlines |
| references/effects-and-filters.md | Schatten, Ringe, Textschatten, Deckkraft, Mischmodi, Masken, Filter und Hintergrundfilter |
| references/transitions-transforms-tables.md | Übergänge, diskrete Übergänge, Animationen, rotieren, skalieren, verschieben, 3D, Zoom, Tabellen |
| references/interactivity-and-svg.md | Farbschema, Feldgrößenbestimmung, Scrollleisten, Scroll-Snap, Cursor, will-change, SVG-Füllung und -Strich, erzwungene Farben |