CSS Dark Mode

Dark Mode – dunkler Untergrund, helle Schrift – gibt schon seit Jahren, aber erst in jüngerer Zeit ist Dark Mode das »Cool Kid on the block«. Helle Schrift auf dunklem Hintergrund ist nicht Jedermanns Ding und kann die Augen stark beanspruchen. In dunkler Umgebung hingegen strengt der leuchtend helle Screen an – da kneifen wir schnell die Augen zusammen.

Dunkler Hintergrund, helle Schrift

darkmode

Dark Mode wird über Einstellungen des Betriebssystems aktiviert und kennt i.d.R. drei Einstellungen: Dunkles Erscheinungsbild, helles Erscheinungsbild und eine automatische Anpassung an das Umgebungslicht.

light-mode-244
light-mode-244

Darkmode spart Energie auf OLED-Monitoren, nicht aber bei LCD-LED-Monitoren, eher also auf Mobiltelefonen, die über die letzten Jahre auf den Markt kamen. Ältere Handys haben ein LCD-Display, das Backlight zum Beleuchten der Pixel braucht.

LCD-LED-Moditore brauchen ein Backlight, das mit konstanter Intensität scheint. Um einen Punkt abzudunkeln, manipuliert ein elektrischer Strom die Kristalle, so dass das Licht blockiert wird – braucht also Energie. OLEDs hingegen realisieren den Dark Mode, indem sie spezielle OLEDs abschalten – das spart ein paar Prozent Energie.

CSS prefers color scheme

CSS gibt den modernen Browsern Zugriff auf die Einstellung des Erscheinungsbilds, so dass die Themes der Webseiten zwischen einem hellen und einem dunklen Modus wechseln können.

:root {
  color-scheme: light dark;
}

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

Dazu gibt es ein relativ neues Meta-Tag:

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

<meta name="color-scheme" content="dark"> versetzt eine Seite automatisch in den Dark Mode.

Das ist schon ein großer erster Schritt. Eine Reihe von Farben und Hintergrundfarben stellt der Browser jetzt im Dark Mode selber um:

  • Links, denen im CSS des Dokuments keine Farben zugewiesen wurden, bleiben zwar violett, aber im Darkmode ist das Violett heller.
    • #D0ADF0 hsl(271,69%,81%) Darkmode-Link
    • #551A8B hsl(271,68%,32%) Lightmode-Link
  • Text ohne Vorbelegung wird weiß.
  • Mit <mark> codierte Elemente behalten ihr strahlendes Gelb rgb(255, 255, 0)
  • audio und video behalten die Farben und den Hintergrund, der Hintergrund eines canvas-Elements ist im Light Mode weiß, im Dark Mode schwarz.

Steuerelemente im Dark Mode

Die Browser schalten die Darstellung von Formular-Elementen wie input type="search", input type="range", type="checkbox" und type="radio" automatisch um. fieldset- und legend-Elemente heben sich ebenfalls vom dunklen Hintergrund ab. Voraussetzung ist natürlich, dass den Elementen zuvor keine Farbe oder Hintergrundfarbe zugewiesen wurde.

Gut am progress-Element zu sehen: Der automatische Hintergrund der Linie im Dark Mode ist ein dunkles Grau, dass sich noch leicht vom Hintergrund abhebt.

Dark Mode, Light Mode und CSS-Variablen

CSS-Variablen sind eine effiziente Methode, um die wichtigsten Elemente auf Light Mode / Dark Mode einzustellen.

@media (prefers-color-scheme: dark) {
	:root {
	  --background-color: #323232;
	  --text-color: #ddd;
	  --shadow-color: #111;
	  --highlight: #666;
	  --primary: hsl(12, 90%, 60%);
	}
}

@media (prefers-color-scheme: light) {
	:root {
	  --background-color: #fefefe;
	  --text-color: #222;
	  --shadow-color: #999;
	  --highlight: #cdcdcd;
	  --primary: hsl(12, 70%, 40%);
	}
}

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

Um die Liste nicht übermäßig zu verlängern, können individuelle Elemente direkt umgeschaltet werden:

button {
	background: light-dark(lightblue, darkblue);
}

Nur nicht einfach Weiß auf Schwarz

Wenn weiße Inhalte schnell über einem reinschwarzen Hintergrund gezogen oder gescrollt werden, kann es auf OLED-Monitoren zu einem Verschmieren kommen, denn das Schwarz entsteht durch das Abschalten der Pixel. Das Ein-/Ausschalten der Pixel ist langsamer als das Umschalten zwischen Farben.

Extreme Kontraste ermüden das Auge – das gilt sowohl für Schwarz auf Weiß als auch für Weiß auf Schwarz. Obendrein stehen hilfreiche Effekte wie z.B. ein leichter Schatten nicht mehr zur Verfügung.

Schatten unter freigestelltem Motiv

Ein leichter Schatten rückt einen wichtigen Block in den Vordergrund. Auf dem tiefsten Schwarz ist kein Schatten möglich.

  • Extreme Kontraste vermeiden
  • Große helle Blöcke vermeiden
  • Möglichkeit abzudunkeln, um weniger Wichtiges in den Hintergrund zu rücken
  • Farben abdunkeln, Sättigung erhöhen
  • Farben für Dark Mode anpassen

    Wenn Farben im HSL notiert werden, lassen sie sich durch ein Absenken der Helligkeit bei gleichzeitiger Erhöhung der Sättigung an den Darkmode anpassen: Diese Technik erhält den Farbton.

    hsl(12,85%,45%)
    hsl(180,90%,40%)
    hsl(213,80%,65%)
    hsl(260,90%,70%)
    hsl(12,80%,50%)
    hsl(180,80%,45%)
    hsl(213,70%,45%)
    hsl(260,80%,65%)
    Light Mode          Dark Mode
           reduzierte Helligkeit ───┐
                                    │
                                    ▼
    hsl(12,80%,50%)     hsl(12,85%,45%)
    hsl(213,70%,70%)    hsl(213,80%,65%)
                                 ▲
                                 │
             Höhere Sättigung ───┘
    

    Grafiken invertieren?

    Fotos zu invertieren – also als Negativ anzuzeigen – wird kaum eine gute Idee sein. Aber mit Grafiken ohne Hintergrund kann ein CSS filter: invert gute Ergebnisse liefern.

    Seitenverhältnis
    Das muss man beim Invertieren der Farben in Kauf nehmen: Das invertierte Grün wird ein feuriges Magenta. Immerhin wird die schwarze Schrift der Grafik zu Weiß.
    @media (prefers-color-scheme: dark) {	
    	.imgfx {
    		filter: invert(100%);
    	}
    }
    
    Suchen auf mediaevent.de