0Pricing
CSS Academy · Lektion

Automatischer und manueller Dark-Mode-Umschalter

Erstellen Sie einen Theme-Umschalter, der standardmäßig die Systemeinstellung berücksichtigt und eine manuelle Überschreibung ermöglicht.

Automatischer und manueller Dark-Mode-Umschalter ist eine kostenlose CSS Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des CSS Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CSS Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Ziel

Eine ideale Dark-Mode-Implementierung erkennt standardmäßig automatisch die Einstellung des Betriebssystems und bietet eine Umschaltfläche, mit der Nutzer diese unabhängig davon überschreiben können. Die Einstellung wird über das Laden der Seite hinaus gespeichert.

Überblick über die Architektur

Drei Zustände müssen behandelt werden:

  1. Systemeinstellung: Verwenden Sie prefers-color-scheme mit CSS-Variablen
  2. Überschreibung durch den Nutzer: dunkel: Setzen Sie eine Klasse oder ein Datenattribut auf <html>
  3. Überschreibung durch den Nutzer: hell: Setzen Sie eine andere Klasse, um den automatischen Dark Mode zu verhindern

CSS-Token einrichten

Definieren Sie CSS-Variablen, die für alle Zustände korrekt kaskadieren:

<div class="demo" data-theme="dark">Dark token demo</div>
<div class="demo" data-theme="light">Light token demo</div>

Umschaltlogik in JavaScript

Lesen Sie die gespeicherte Einstellung aus, wenden Sie sie an und aktualisieren Sie sie beim Umschalten:

<div class="demo" id="theme-demo">Toggle my theme</div>
<div class="demo" data-theme="dark">Dark override example</div>
<button id="toggle-btn">Toggle Theme</button>
<script>
  function toggleTheme() {
    const current = document.getElementById('theme-demo').dataset.theme;
    const system = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
    if (!current) {
      const next = system === 'dark' ? 'light' : 'dark';
      document.getElementById('theme-demo').dataset.theme = next;
    } else {
      delete document.getElementById('theme-demo').dataset.theme;
    }
  }
  document.getElementById('toggle-btn').addEventListener('click', toggleTheme);
</script>

Umschaltung mit drei Zuständen

Eine weiter verfeinerte Umschaltung mit drei Zuständen: Hell | System | Dunkel:

<div class="demo" id="theme-demo">Cycles: light → system → dark</div>
<div class="demo" data-theme="dark">Dark state example</div>
<p id="state-label">system</p>
<button id="cycle-btn">Cycle Theme</button>
<script>
  const states = ['light', 'system', 'dark'];
  let current = 'system';
  const demo = document.getElementById('theme-demo');
  const label = document.getElementById('state-label');
  document.getElementById('cycle-btn').addEventListener('click', () => {
    current = states[(states.indexOf(current) + 1) % states.length];
    label.textContent = current;
    if (current === 'system') { delete demo.dataset.theme; } else { demo.dataset.theme = current; }
  });
</script>

Aufblitzen des falschen Themes verhindern

Wenden Sie das gespeicherte Theme synchron an, bevor die Seite gerendert wird:

<pre class="code-sample">&lt;!-- In &lt;head&gt;, before any styles --&gt;
&lt;script&gt;
  const t = localStorage.getItem("theme");
  if (t) document.documentElement.dataset.theme = t;
&lt;/script&gt;</pre>

Barrierefreiheit der Umschaltfläche

Die Umschaltfläche sollte Screenreadern den aktuellen Zustand mitteilen. Aktualisieren Sie beim Umschalten die barrierefreie Beschriftung:

<button id="theme-toggle" aria-label="Switch to dark mode">🌙</button>

Animierter Theme-Übergang

Weiche Farbübergänge bei einem Theme-Wechsel:

<div class="demo" id="at-demo">Smooth theme transition</div>
<button onclick="document.documentElement.classList.add('theme-transitioning'); const d=document.getElementById('at-demo'); const dark = d.style.background==='rgb(17, 17, 17)'; d.style.background = dark ? '#fff' : '#111'; d.style.color = dark ? '#111' : '#fff'; setTimeout(()=>document.documentElement.classList.remove('theme-transitioning'),250);">Toggle</button>

Auf Änderungen der Systemeinstellung reagieren

Reagieren Sie auch, wenn der Nutzer die Einstellung des Betriebssystems ändert, während die Seite geöffnet ist:

<p id="status">Listening for system theme changes…</p>
<script>
  window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
    document.getElementById('status').textContent = 'System changed to ' + (e.matches ? 'dark' : 'light');
  });
</script>

Symbole im Dark Mode

Tauschen Sie die Symbole für die einzelnen Modi aus. Verwenden Sie für themenabhängige Bilder das picture-Element oder CSS, um unterschiedliche Symbole ein- und auszublenden:

<div>Light: <span class="icon-sun">☀️</span><span class="icon-moon">🌙</span></div>
<div data-theme="dark">Dark: <span class="icon-sun">☀️</span><span class="icon-moon">🌙</span></div>

Zusammenfassung: Implementierungs-Checkliste

Checkliste für den Dark Mode:

  • CSS-Variablen für alle Farb-Tokens
  • Media Query mit prefers-color-scheme zur automatischen Erkennung
  • data-theme-Attribut für die manuelle Überschreibung
  • localStorage zum Speichern der Einstellung
  • Inline-Skript im head, um ein Aufblitzen zu verhindern
  • Barrierefreie Umschaltfläche mit dynamischem aria-label

Schnelltest

Welche Technik verhindert beim Laden der Seite ein „kurzes Aufblitzen des falschen Themes“?

Zusammenfassung

Eine vollständige Dark-Mode-Umschaltung verwendet CSS-Variablen für Theme-Tokens, eine prefers-color-scheme-Abfrage zur automatischen Erkennung, ein data-theme-Attribut für die manuelle Überschreibung, localStorage zum Speichern der Einstellung sowie ein synchron ausgeführtes Skript im head, um ein Aufblitzen zu verhindern. Bieten Sie eine barrierefreie Umschaltung mit drei Zuständen (hell/System/dunkel) für die bestmögliche Benutzererfahrung.

Häufig gestellte Fragen

Ist die Lektion „Automatischer und manueller Dark-Mode-Umschalter“ kostenlos?

Ja — der vollständige Text von „Automatischer und manueller Dark-Mode-Umschalter“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des CSS Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der CSS Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Automatischer und manueller Dark-Mode-Umschalter“?

Erstellen Sie einen Theme-Umschalter, der standardmäßig die Systemeinstellung berücksichtigt und eine manuelle Überschreibung ermöglicht. Du übst CSS Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um CSS Academy zu starten?

Keine Vorkenntnisse erforderlich. CSS Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Automatischer und manueller Dark-Mode-Umschalter“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser CSS Academy-Lektion Code schreiben und ausführen?

Ja. Jede CSS Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. prefers-color-scheme-Media-Query
  2. CSS-Variablen für Themes
  3. color-scheme-Eigenschaft
  4. Automatischer und manueller Dark-Mode-Umschalter
← Zurück zu CSS Academy