Dark Mode

Dark Mode: Gängige Methoden

1. Über prefers-color-scheme automatisch dem System folgen

Der Browser erkennt, ob das Betriebssystem auf Hell oder Dunkel gestellt ist.

Beispiel

body {
  background: white;
  color: black;
}

@media (prefers-color-scheme: dark) {
  body {
    background: #121212;
    color: white;
  }
}

Vorteile

Nachteile


2. Per CSS-Klasse auf html oder body

Du setzt z. B. eine Klasse wie dark auf das <html>- oder <body>-Element und definierst dafür eigene Styles.

Beispiel

<html class="dark">
body {
  background: white;
  color: black;
}

.dark body {
  background: #121212;
  color: white;
}

Vorteile

Nachteile


3. Mit CSS Custom Properties (Variablen)

Oft die sauberste Lösung: Du definierst Farbvariablen und überschreibst sie im Dark Mode.

Beispiel

:root {
  --bg: white;
  --text: black;
}

.dark {
  --bg: #121212;
  --text: white;
}

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

Vorteile

Nachteile


4. Kombination aus Systempräferenz + manuellem Toggle

Das ist in der Praxis oft die beste Lösung.

Typischer Ablauf

Beispielidee

Vorteile

Nachteile


5. Framework-spezifische Lösungen

Viele Frameworks bringen eigene Patterns mit:

Vorteil

Nachteil


Technisch gängige Umsetzungsmuster

A. Nur CSS

Gut für einfache Websites:

B. CSS + JavaScript Toggle

Gut für die meisten Websites:

C. Design Tokens / Theming-System

Gut für große Anwendungen:


Worauf man achten sollte

1. Nicht nur Hintergrund und Text ändern

Auch wichtig:

2. Kontrast

Dark Mode ist nicht einfach „schwarz mit weißem Text“.
Besser:

3. Bilder und Logos

4. FOUC / Flash beim Laden vermeiden

Wenn das Theme erst nach dem Laden per JS gesetzt wird, sieht man kurz das falsche Theme.
Lösung:

5. Browser-UI anpassen

Mit

<meta name="color-scheme" content="light dark">

oder in CSS:

:root {
  color-scheme: light dark;
}

können native Form-Controls und Scrollbars besser zum Theme passen.


Empfehlung für die Praxis

Für moderne Websites ist meistens diese Kombination am sinnvollsten:

Das ist heute wahrscheinlich der gängigste und robusteste Ansatz.