Tailwind 4
Tailwind CSS 4 ist ein modernes CSS-Framework, das mit einem konsequenten Utility-First-Ansatz schnelle und flexible Gestaltung von Webanwendungen ermöglicht. Es bringt Verbesserungen wie native CSS-Variablen für Farben und Spacing sowie eine optimierte Performance ohne notwendige Konfiguration. In SVWS setzen wir Tailwind 4 ein, um einheitliche, flexible und wartbare Styles effizient umzusetzen.
Durch die Umstellung auf Tailwind 4 haben sich einige Neuerungen im Umgang mit dem Framework ergeben, die bereits in den Projekten ausgerollt wurden. Damit auch zukünftig die Arbeit mit dem Framework funktioniert, gibt es ein paar Regeln, die beachtet werden müssen. Diese werden im Folgenden aufgelistet und erklärt.
Implementierung von Tailwind 4 im Projekt
Durch die Umstellung auf Tailwind 4 haben sich einige Neuerungen im Umgang mit dem Framework ergeben, die bereits in den Projekten ausgerollt wurden. So gibt es zum Beispiel keine tailwind.config.ts
-Datei mehr, sondern es werden direkt Utility Klassen in CSS Dateien definiert.
Alle CSS Dateien werden in der Datei ui\src\assets\styles\index.css
importiert. Diese Datei dient als zentrale CSS-Datei. Weitere Utility-Klassen wurden in unterschiedlichen CSS-Dateien definiert.
ui\src\assets\styles\colors.css
enthält alle CSS-Variablen, die sich auf Farben beziehen. Diese wiederum nutzen Palettenfarben, die inui\src\assets\styles\palette.css
definiert sind. Die Farben incolors.css
sind dabei jeweils für das light- und das dark-Theme definiert. Es wird automatisiert die Farbe geladen, je nachdem welches Theme geladen ist. Klassen wiebg-ui dark:bg-ui-neutral
o.Ä. sind nicht mehr erforderlich.ui\src\assets\styles\borders.css
enthält Utility-Klassen, die sich auf Borders beziehen.ui\src\assets\styles\dimensions.css
enthält Utility-Klassen, die sich auf Dimensionen beziehen, zum Beispiel die Größen von Modalen.ui\src\assets\styles\fonts.css
enthält alle Utility-Klassen, die sich auf Schriften beziehen.ui\src\assets\styles\icons.css
enthält alle Utility-Klassen, die sich auf Icons beziehen wie Icon-Größen oder alle definierten Icons von Remix Icon.ui\src\assets\styles\screens.css
enthält Utility-Klassen, die sich auf Breakpoints von Screengrößen beziehen.
Regeln zur Verwendung von Tailwind Klassen
1. Tailwind-Klassen direkt am Element verwenden
Tailwind-Utility-Klassen sollen direkt an HTML-Elemente geschrieben werden. Eine Auslagerung in eigene CSS-Klassen soll nur dann erfolgen, wenn diese Klasse global zur Verfügung stehen soll oder mehrfach verwendet wird.
Erklärung:
Direktes Anwenden der Klassen erhöht Lesbarkeit, reduziert Komplexität und nutzt den Utility-First-Ansatz von Tailwind konsequent.
Richtig:
<button class="bg-ui-brand text-ui-onbrand rounded-lg p-2">Klick mich</button>
Falsch:
<button class="button-brand">Klick mich</button>
<style>
.button-brand {
@apply bg-ui-brand text-ui-onbrand rounded-lg p-2;
}
</style>
2. <style>
Parts vermeiden – stattdessen CSS-Dateien verwenden
Wenn eigene CSS-Klassen erforderlich sind, vermeide <style>
-Abschnitte innerhalb von Vue-Komponenten.
Stattdessen soll eine separate CSS-Datei mit gleichem Namen wie die Komponente verwendet werden (z.B. Button.vue
→ Button.css
). Diese Datei liegt im selben Verzeichnis wie die dazugehörige Vuekomponente.
Sollte dennoch ein <style>
-Abschnitt benötigt werden, dann ist zu beachten, dass hier kein Tailwind verwendet werden kann.
Erklärung:
Styles bleiben so modular und getrennt, verbessern die Lesbarkeit und fördern Wiederverwendbarkeit.
Richtig:
/* Button.css */
.btn {
@apply inline-flex items-center justify-center;
}
Nur in Ausnahmefällen erlaubt, aber ohne Tailwind:
<template>
<div class="text-ui-base">Beispielinhalt</div>
</template>
<style>
/* Kein Tailwind hier */
.custom-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
}
</style>
3. Nur SVWS-Farben verwenden
Es dürfen ausschließlich SVWS-definierte Farben verwendet werden. Tailwind Farben sind nicht erlaubt. SVWS-Farben sind an dem Zusatz -ui-
bzw. -uistatic-
im Namen zu erkennen.
Erklärung:
SVWS stellt ein konsistentes Farbsystem bereit, das einheitlich genutzt werden kann und den Kontrastrichtlinien von WCAG entspricht. Die genaue Verwendung der Farben in SVWS UI unter Farben
dokumentiert.
4. Tailwind-Stateklassen verwenden (hover:
, focus:
usw.)
Verwende die Tailwind-Modifiers wie hover:
, focus:
, active:
, disabled:
oder Childselektoren wie & > *
usw., um Klassen für bestimmte States zu steuern. Eine ausführliche Dokumentation über alle States bietet Tailwind - Hover, focus, and other states.
Erklärung:
Tailwind stellt Modifier für alle gängigen Zustände bereit. So bleibt das Styling konsistent, schnell änderbar und vollständig im Markup sichtbar.
Richtig:
<button class="bg-ui-brand text-ui-onbrand hover:bg-ui-brand-hover focus:outline-none focus:ring-2 focus:ring-ui-brand p-2 rounded">
Klick mich
</button>
Falsch:
<button class="btn-brand">Klick mich</button>
<style>
.btn-brand:hover {
background-color: var(--text-ui-brand-hover);
}
</style>