mitmario.dev

CSS-Grundlagen · 9 von 11

CSS Custom Properties

Im letzten Artikel hast du viele verschiedene Farbwerte wie #1a56db geschrieben. Stell dir vor, du möchtest diese Farbe auf deiner ganzen Website ändern. Du müsstest jeden einzelnen Hex-Wert suchen und ersetzen. CSS Custom Properties (auch CSS-Variablen genannt) lösen genau dieses Problem: Du definierst einen Wert einmal und verwendest ihn überall.

Steckbrief Grundlagen
Reihe
CSS-Grundlagen
Teil
9 von 11
Kapitel
8
Vorschauen
5
Lesezeit
4 Min
Stand
10.02.2026

Custom Properties definieren

01 / 08

Eine Custom Property beginnt immer mit zwei Bindestrichen (--) gefolgt von einem Namen. Du definierst sie wie jede andere CSS-Eigenschaft:

Custom Properties auf :root
:root {
  --farbe-primary: #1a56db;
  --farbe-hintergrund: #dbeafe;
  --abstand: 16px;
}

.box {
  background: var(--farbe-hintergrund);
  border: 2px solid var(--farbe-primary);
  color: var(--farbe-primary);
  padding: var(--abstand);
}

:root ist ein Selektor, der auf das <html>-Element zeigt. Custom Properties, die du dort definierst, stehen im gesamten Dokument zur Verfügung. Das ist der übliche Ort für globale Design-Werte.

Custom Properties verwenden

02 / 08

Mit der var()-Funktion greifst du auf den Wert einer Custom Property zu:

var() in der Praxis
:root {
  --primary: #1a56db;
  --radius: 8px;
}

.button {
  background: var(--primary);
  border-radius: var(--radius);
}

.card {
  border: 2px solid var(--primary);
  border-radius: var(--radius);
}

Änderst du --primary auf :root, ändert sich die Farbe automatisch bei Button und Karte. Das ist der Kern von Custom Properties: Eine Stelle ändern, überall wirksam.

Scope und Vererbung

03 / 08

Custom Properties folgen der normalen CSS-Vererbung. Das bedeutet: Du kannst sie auf jedem Element definieren, und alle Kinder erben den Wert.

Lokaler Scope überschreibt globalen
:root {
  --farbe: #1a56db;
}

.bereich-a {
  --farbe: #dc2626;
}

.bereich-b {
  --farbe: #059669;
}

.box {
  color: var(--farbe);
  border-left: 4px solid var(--farbe);
}

.box verwendet immer var(--farbe), aber der tatsächliche Wert hängt davon ab, wo sich die Box im DOM befindet. Im Bereich A ist --farbe rot, im Bereich B grün, und außerhalb beider Bereiche gilt der globale blaue Wert von :root.

Fallback-Werte

04 / 08

Die var()-Funktion akzeptiert einen zweiten Parameter: einen Fallback-Wert, der greift, wenn die Custom Property nicht definiert ist.

Fallback in var()
.element {
  /* --nicht-definiert existiert nicht → #dc2626 wird verwendet */
  color: var(--nicht-definiert, #dc2626);

  /* Verschachtelte var() als Fallback */
  background: var(--theme-bg, var(--default-bg, #f3f4f6));
}

Fallbacks sind besonders nützlich, wenn du Komponenten baust, die auch ohne bestimmte Custom Properties funktionieren sollen. Der Fallback-Wert kann sogar eine weitere var()-Funktion sein.

Theming mit Custom Properties

05 / 08

Der häufigste Einsatzzweck für Custom Properties ist ein Theme-System. Du definierst alle Farben als Variablen und tauschst sie je nach Kontext aus:

Dark/Light Theme
.theme-light {
  --bg: #ffffff;
  --text: #1f2937;
  --primary: #1a56db;
  --surface: #f3f4f6;
}

.theme-dark {
  --bg: #1f2937;
  --text: #f3f4f6;
  --primary: #60a5fa;
  --surface: #374151;
}

.page {
  background: var(--bg);
  color: var(--text);
}

.card {
  background: var(--surface);
}

.link {
  color: var(--primary);
}

Das CSS für .page, .card und .link bleibt identisch. Nur die Custom Properties ändern sich je nach Theme-Klasse. Das macht Theming wartbar: Neue Farben anpassen bedeutet, ein paar Variablen zu ändern, nicht hunderte Regeln zu durchsuchen.

Custom Properties vs. Präprozessor-Variablen

06 / 08

Wenn du von Sass oder Less gehört hast: Diese Tools bieten auch Variablen ($farbe in Sass, @farbe in Less). Der entscheidende Unterschied liegt im Zeitpunkt:

EigenschaftCSS Custom PropertiesSass/Less-Variablen
ZeitpunktLaufzeit (im Browser)Build-Zeit (beim Kompilieren)
ScopeFolgt dem DOM (Vererbung)Folgt dem Code (lexikalisch)
Dynamisch änderbarJa (per JavaScript, Media Queries)Nein (nach dem Build fixiert)
Fallback-Wertevar(--x, fallback)Nicht möglich
ThemingPer Klasse oder Media QueryNur durch Neukompilierung
Browser-SupportAlle modernen BrowserBraucht Build-Tool

CSS Custom Properties sind echte CSS-Features, die im Browser leben. Sass-Variablen sind Platzhalter, die beim Kompilieren durch feste Werte ersetzt werden. Für Theming und dynamische Werte sind Custom Properties die bessere Wahl.

Häufige Fehler

07 / 08
01 Fehlende Bindestriche
Custom Properties brauchen zwei Bindestriche am Anfang. --farbe ist korrekt, -farbe oder farbe nicht.
02 var() vergessen
color: --farbe funktioniert nicht. Du musst immer color: var(--farbe) schreiben.
03 Custom Properties in Werten ohne var() verwenden
Innerhalb von calc() brauchst du var(). Richtig: calc(var(--abstand) * 2). Falsch: calc(--abstand * 2).
04 Groß/Kleinschreibung ignorieren
--Farbe und --farbe sind zwei verschiedene Custom Properties. Halte dich an eine Konvention, am besten durchgehend Kleinbuchstaben mit Bindestrichen.
05 Alles als Custom Property definieren
Nicht jeder Wert braucht eine Variable. Nutze Custom Properties für Werte, die wiederverwendet oder ausgetauscht werden sollen (Farben, Abstände, Radien). Einmalige Werte wie border: 1px solid können direkt stehen.

Zusammenfassung

08 / 08
KonzeptBeschreibung
Definition--name: wert; (immer mit zwei Bindestrichen)
Verwendungvar(--name) um den Wert abzurufen
ScopeFolgt der CSS-Vererbung, lokal überschreibbar
Fallbackvar(--name, fallback) wenn die Property nicht existiert
:rootGlobaler Scope für projektweite Variablen
ThemingVariablen pro Theme-Klasse überschreiben
LaufzeitIm Browser verfügbar, per JavaScript änderbar
NamenskonventionKleinbuchstaben mit Bindestrichen (--farbe-primary)

Du kannst jetzt Werte zentral definieren und dein CSS wartbarer gestalten. Im nächsten Artikel geht es um CSS Funktionen: calc(), min(), max(), clamp() und wie du damit flexible Berechnungen direkt in CSS schreibst.

Newsletter

einmal die Woche, kostenlos

Neue Artikel und Videos, was sich auf der Lernplattform tut, und ab und zu ein Sonderpreis zum Kursstart. Kurz genug, dass du es auch liest.

Zuletzt verschickt · KW 40

Einmal alles neu, und die Lernplattform ist da

Danach kommt eine Mail mit Bestätigungslink, erst dann bist du eingetragen. Abmelden geht unten in jeder Ausgabe. Mehr dazu in der Datenschutzerklärung.