CSS Custom Properties: Variablen im Stylesheet | Enjyn Gruppe
Hallo Welt
→
→
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

330 Dokumentationen verfügbar

Wissensdatenbank

CSS Variablen Custom Properties

Zuletzt aktualisiert: 14.07.2026 um 12:30 Uhr

CSS Custom Properties: Variablen im Stylesheet

CSS-Variablen machen Stylesheets wartbarer und flexibler. Farben, Abstände und andere Werte zentral definieren und überall verwenden.

Grundlagen

Definition

/* Variablen mit -- definieren */
:root {
  --primary-color: #3b82f6;
  --secondary-color: #10b981;
  --text-color: #1f2937;
  --spacing-sm: 0.5rem;
  --spacing-md: 1rem;
  --spacing-lg: 2rem;
  --border-radius: 8px;
  --font-family: 'Inter', sans-serif;
}

Verwendung

/* Mit var() verwenden */
.button {
  background: var(--primary-color);
  padding: var(--spacing-sm) var(--spacing-md);
  border-radius: var(--border-radius);
  font-family: var(--font-family);
}

.card {
  border: 1px solid var(--secondary-color);
  padding: var(--spacing-lg);
}

Fallback-Werte

/* Fallback wenn Variable nicht existiert */
.element {
  color: var(--undefined-color, #000);
  padding: var(--spacing, 1rem);
}

/* Verkettete Fallbacks */
.element {
  color: var(--theme-color, var(--primary-color, blue));
}

Scope und Vererbung

/* Global (auf :root) */
:root {
  --color: blue;
}

/* Lokal überschreiben */
.dark-section {
  --color: lightblue;
}

/* Komponenten-spezifisch */
.card {
  --card-padding: 1rem;
  --card-bg: white;

  padding: var(--card-padding);
  background: var(--card-bg);
}

.card.featured {
  --card-padding: 2rem;
  --card-bg: #f0f9ff;
}

Dark Mode mit CSS-Variablen

:root {
  /* Light Mode (Standard) */
  --bg-color: #ffffff;
  --text-color: #1f2937;
  --border-color: #e5e7eb;
}

/* Dark Mode */
@media (prefers-color-scheme: dark) {
  :root {
    --bg-color: #1f2937;
    --text-color: #f9fafb;
    --border-color: #374151;
  }
}

/* Oder mit Klasse */
.dark {
  --bg-color: #1f2937;
  --text-color: #f9fafb;
}

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

Theming-System

/* Theme-Variablen */
:root {
  /* Farbpalette */
  --blue-500: #3b82f6;
  --blue-600: #2563eb;
  --green-500: #10b981;
  --red-500: #ef4444;

  /* Semantische Variablen */
  --color-primary: var(--blue-500);
  --color-primary-hover: var(--blue-600);
  --color-success: var(--green-500);
  --color-error: var(--red-500);

  /* Komponenten-Tokens */
  --button-bg: var(--color-primary);
  --button-bg-hover: var(--color-primary-hover);
}

/* Alternative Themes */
.theme-green {
  --color-primary: var(--green-500);
}

.button {
  background: var(--button-bg);
}

.button:hover {
  background: var(--button-bg-hover);
}

Mit JavaScript ändern

// Variable lesen
const root = document.documentElement;
const primaryColor = getComputedStyle(root)
  .getPropertyValue('--primary-color');

// Variable setzen
root.style.setProperty('--primary-color', '#ff0000');

// Auf Element setzen
element.style.setProperty('--card-bg', '#f0f0f0');

// Variable entfernen (zurück zum geerbten Wert)
root.style.removeProperty('--primary-color');

Theme-Switcher

function setTheme(theme) {
  const root = document.documentElement;

  if (theme === 'dark') {
    root.style.setProperty('--bg-color', '#1f2937');
    root.style.setProperty('--text-color', '#f9fafb');
  } else {
    root.style.setProperty('--bg-color', '#ffffff');
    root.style.setProperty('--text-color', '#1f2937');
  }

  localStorage.setItem('theme', theme);
}

// Beim Laden
const savedTheme = localStorage.getItem('theme') || 'light';
setTheme(savedTheme);

Berechnungen mit calc()

:root {
  --base-size: 16px;
  --scale: 1.25;
}

h1 {
  /* Berechnung mit Variablen */
  font-size: calc(var(--base-size) * var(--scale) * var(--scale) * var(--scale));
}

h2 {
  font-size: calc(var(--base-size) * var(--scale) * var(--scale));
}

.sidebar {
  --sidebar-width: 250px;
  width: var(--sidebar-width);
}

.main {
  width: calc(100% - var(--sidebar-width));
}

Responsive Variablen

:root {
  --container-padding: 1rem;
  --heading-size: 1.5rem;
}

@media (min-width: 768px) {
  :root {
    --container-padding: 2rem;
    --heading-size: 2rem;
  }
}

@media (min-width: 1024px) {
  :root {
    --container-padding: 3rem;
    --heading-size: 2.5rem;
  }
}

.container {
  padding: var(--container-padding);
}

h1 {
  font-size: var(--heading-size);
}

Best Practices

💡 Empfehlungen:
  • Semantische Namen: --color-primary statt --blue
  • Design Tokens in drei Ebenen: Primitiv → Semantisch → Komponente
  • Globale Variablen auf :root
  • Immer Fallback-Werte angeben
  • Gruppieren Sie zusammengehörige Variablen

CSS-Variablen vs. Sass-Variablen

CSS Custom Properties Sass Variablen
Laufzeit (dynamisch) Compile-Zeit (statisch)
Mit JavaScript änderbar Nicht änderbar
Kaskadieren und vererben Keine Vererbung
In DevTools sichtbar Nur kompilierter Wert

Weitere Informationen

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120