0Pricing
React Academy · Lektion

Systemfarbschema erkennen

Die Dark-Mode-Einstellung des Betriebssystems mit prefers-color-scheme auslesen und den React-Zustand bei Änderungen aktualisieren

Systemfarbschema erkennen ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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 React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Die prefers-color-scheme-Media-Query

Die CSS-Media-Query prefers-color-scheme erkennt, ob das Betriebssystem des Benutzers für ein dunkles oder helles Farbschema konfiguriert ist. Sie akzeptiert zwei Werte: dark und light. Diese Einstellung wird auf Betriebssystemebene in den Systemeinstellungen festgelegt, nicht im Browser.

CSS-Dark-Mode per Media Query

Sie können dunkle Stile vollständig mit CSS anwenden, und zwar über @media (prefers-color-scheme: dark) { ... }. Innerhalb dieses Blocks überschreiben Sie Farben, Hintergründe und Rahmen passend zu einer dunklen Farbpalette. Dieser Ansatz benötigt kein JavaScript und funktioniert sogar, bevor React gemountet wird.

window.matchMedia in JavaScript

In JavaScript gibt window.matchMedia('(prefers-color-scheme: dark)') ein MediaQueryList-Objekt zurück. Damit können Sie die aktuelle Systemeinstellung innerhalb von React-Hooks oder Event-Handlern programmgesteuert auslesen. Dies bildet die Brücke zwischen CSS-Media-Queries und Ihrer JS-Logik.

Den Anfangswert auslesen

Das MediaQueryList-Objekt besitzt eine matches-Eigenschaft, die einen Boolean zurückgibt. Ist matches true, befindet sich das System im Dark Mode; bei false im Light Mode. Typischerweise lesen Sie diesen Wert beim Mounten einmal aus, um den Theme-Status zu initialisieren.

Auf Systemänderungen reagieren

Benutzer können ihr Farbschema im Betriebssystem jederzeit ändern. Um dynamisch darauf zu reagieren, rufen Sie mediaQuery.addEventListener('change', handler) auf, wobei handler das aktualisierte MediaQueryListEvent empfängt. Das Ereignisobjekt besitzt ebenfalls einen booleschen Wert matches, der die neue Einstellung widerspiegelt.

Den usePrefersDarkMode-Hook erstellen

Ein sauberer Ansatz besteht darin, einen benutzerdefinierten Hook mit useSyncExternalStore zu erstellen. Der Hook abonniert mediaQuery.addEventListener und stellt eine Snapshot-Funktion bereit, die mediaQuery.matches zurückgibt. So bleibt der Hook mit der externen Browser-API synchron, ohne dass Sie den Zustand manuell verwalten müssen.

Beim Cleanup abmelden

Wenn Ihre Komponente ausgehängt wird, müssen Sie den Event-Listener entfernen, um Speicherlecks zu vermeiden. Rufen Sie im Cleanup von useEffect mediaQuery.removeEventListener('change', handler) auf. Bei useSyncExternalStore muss die Subscribe-Funktion eine Unsubscribe-Funktion zurückgeben, die dasselbe tut.

Systemeinstellung vs. Benutzerüberschreibung

Die Systemeinstellung ist das, was das Betriebssystem meldet. Benutzer möchten das App-Theme jedoch häufig unabhängig davon überschreiben, etwa die App hell lassen, während das Betriebssystem im Dark Mode ist. Ihre Architektur sollte zwischen dem Systemstandard und einer expliziten, in localStorage gespeicherten Benutzerüberschreibung unterscheiden.

Farbschema in DevTools simulieren

Mit den Chrome DevTools können Sie Farbschema-Einstellungen simulieren, ohne die Betriebssystemeinstellungen zu ändern. Öffnen Sie die DevTools, wechseln Sie zum Tab „Rendering“ und suchen Sie das Dropdown-Menü „Emulate CSS media feature prefers-color-scheme“. Dies ist beim schnellen Testen beider Themes während der Entwicklung äußerst hilfreich.

Die Benutzereinstellung standardmäßig berücksichtigen

Eine gute Dark-Mode-Implementierung liest die Systemeinstellung als standardmäßigen Ausgangspunkt aus und wendet sie sofort an. Damit respektieren Sie die Barrierefreiheitseinstellung des Benutzers. Erst wenn der Benutzer das Theme in Ihrer App ausdrücklich umschaltet, sollten Sie eine abweichende Überschreibung speichern und verwenden.

SSR-Aspekte bei der Systemeinstellung

Auf dem Server ist window.matchMedia nicht vorhanden. Wenn Sie serverseitig rendern, prüfen Sie mit typeof window !== 'undefined', bevor Sie matchMedia aufrufen. Lesen Sie bei SSR-Apps die Benutzereinstellung stattdessen aus einem Cookie oder HTTP-Header aus, um Hydration-Mismatches zu vermeiden.

matchMedia-API prüfen

Welche Eigenschaft eines MediaQueryList-Objekts gibt an, ob die Media Query derzeit zutrifft?

Zusammenfassung der Lektion: Systemfarbschema erkennen

Die prefers-color-scheme-Media-Query stellt die Farbpräferenz des Betriebssystems in CSS und JavaScript bereit. Verwenden Sie window.matchMedia, um Änderungen auszulesen und zu verfolgen, bereinigen Sie Event-Listener stets und unterscheiden Sie zwischen Systemstandards und Benutzerüberschreibungen. Die Emulation in den Chrome DevTools beschleunigt das Testen beider Themes.

Häufig gestellte Fragen

Ist die Lektion „Systemfarbschema erkennen“ kostenlos?

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

Was lerne ich in „Systemfarbschema erkennen“?

Die Dark-Mode-Einstellung des Betriebssystems mit prefers-color-scheme auslesen und den React-Zustand bei Änderungen aktualisieren Du übst React 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 React Academy zu starten?

Keine Vorkenntnisse erforderlich. React 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 1 von 4.

Wie lange dauert die Lektion „Systemfarbschema erkennen“?

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 React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React 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. Systemfarbschema erkennen
  2. CSS-Variablen für den Theme-Wechsel
  3. React Context für den Theme-Zustand
  4. Theme speichern und Aufblitzen verhindern
← Zurück zu React Academy