Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

light-dark()-CSS-Funktion

Baseline 2024
Neu verfügbar

Seit Mai 2024 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Die light-dark()-CSS-Funktion akzeptiert zwei Farben oder zwei Bilder und gibt abhängig vom aktiven Farbschema eine Farbe oder ein Bild zurück, ohne dass das Medienmerkmal prefers-color-scheme benötigt wird.

Syntax

css
/* Named color values */
light-dark(
  black,
  white
);

/* RGB color values */
light-dark(
  rgb(0 0 0),
  rgb(255 255 255)
);

/* image url values */
light-dark(
  url("light-icon.png"),
  url("dark-icon.png")
);

/* linear-gradient values */
light-dark(
  linear-gradient(135deg, ghostwhite 20%, tomato),
  linear-gradient(45deg, darkslategray 20%, gold)
);

/* Custom properties */
light-dark(
  var(--light),
  var(--dark)
);

Werte

Die Funktion light-dark() hat zwei Formen:

Beschreibung

Benutzer können ihre Präferenz für ein Farbschema über die Einstellungen ihres Betriebssystems (z. B. heller oder dunkler Modus) oder ihres User Agents angeben. Mit der Funktion light-dark() können entweder zwei Farbwerte angegeben werden, wobei jeder <color>-Wert zulässig ist, oder zwei Bildwerte, wobei jeder <image>-Wert zulässig ist. Die Funktion light-dark() gibt den ersten Wert zurück, wenn das verwendete Farbschema light ist oder keine Präferenz festgelegt wurde, und den zweiten Wert, wenn das verwendete Farbschema dark ist.

Damit die Farbfunktion light-dark() unterstützt wird, muss color-scheme den Wert light dark haben. Dieser wird üblicherweise auf der Pseudoklasse :root festgelegt.

css
:root {
  color-scheme: light dark;
}
body {
  color: light-dark(#333b3c, #efefec);
  background-color: light-dark(#efedea, #223a2c);
}

Formale Syntax

<light-dark()> = 
<light-dark-color> |
<light-dark-image>

<light-dark-color> =
light-dark( <color> , <color> )

<light-dark-image> =
light-dark( [ <image> | none ] , [ <image> | none ] )

<image> =
<url> |
<image()> |
<image-set()> |
<cross-fade()> |
<element()> |
<gradient>

<image()> =
image( <image-tags>? [ <image-src>? , <color>? ]! )

<image-set()> =
image-set( <image-set-option># )

<cross-fade()> =
cross-fade( <cf-image># )

<element()> =
element( <id-selector> )

<image-tags> =
ltr |
rtl

<image-src> =
<url> |
<string>

<image-set-option> =
[ <image> | <string> ] [ <resolution> || type( <string> ) ]?

<cf-image> =
[ <image> | <color> ] &&
<percentage [0,100]>?

<id-selector> =
<hash-token>

Beispiele

Farben anhand eines Farbschemas festlegen

In Browsern, die die Funktion unterstützen, hängt die von der Farbfunktion light-dark() zurückgegebene Farbe standardmäßig von der Präferenz ab, die in den Einstellungen des Betriebssystems (z. B. heller oder dunkler Modus) oder des User Agents festgelegt wurde. Sie können diese Einstellung auch in den Entwicklerwerkzeugen des Browsers ändern.

HTML

Wir fügen drei Abschnitte ein, um helle Farben, dunkle Farben und die anhand des bevorzugten Farbschemas des Benutzers ausgewählten Farben gezielt ansprechen zu können.

html
<h1><code>light-dark()</code> CSS function</h1>
<section>
  <h2>Automatic</h2>
  <p>This section will react to the users system or user agent setting.</p>
</section>
<section class="light">
  <h2>Light</h2>
  <p>
    This section will be light due to the <code>color-scheme: light;</code>.
  </p>
</section>
<section class="dark">
  <h2>Dark</h2>
  <p>This section will be dark due to the <code>color-scheme: dark;</code>.</p>
</section>

CSS

Wir legen Farben für helle und dunkle Designs fest. Außerdem definieren wir color-scheme für das Dokument auf :root, damit die Farbfunktion light-dark() im gesamten Dokument verwendet werden kann.

css
:root {
  /* this has to be set to switch between light or dark */
  color-scheme: light dark;

  --light-bg: ghostwhite;
  --light-color: darkslategray;
  --light-code: tomato;

  --dark-bg: darkslategray;
  --dark-color: ghostwhite;
  --dark-code: gold;
}
* {
  background-color: light-dark(var(--light-bg), var(--dark-bg));
  color: light-dark(var(--light-color), var(--dark-color));
}
code {
  color: light-dark(var(--light-code), var(--dark-code));
}

Die Eigenschaft color-scheme ermöglicht nicht nur die Verwendung der Funktion light-dark(), sondern auch, das Farbschema des Benutzers für einzelne Dokumentabschnitte zu überschreiben. Wenn ein Seitenabschnitt ausschließlich ein helles oder dunkles Farbschema verwenden soll, können Sie die Eigenschaft color-scheme auf light beziehungsweise dark setzen.

Hinweis: Im Allgemeinen sollten Sie dies nicht tun; hier dient es nur zur Veranschaulichung. Wenn ein Benutzer eine Präferenz festgelegt hat, sollten Sie diese in der Regel nicht überschreiben.

css
.light {
  /* forces light color-scheme */
  color-scheme: light;
}
.dark {
  /* forces dark color-scheme */
  color-scheme: dark;
}

Ergebnis

Hintergrund mit Farbverlauf anhand eines Farbschemas festlegen

Dieses Beispiel verwendet denselben HTML-Code wie das vorherige Beispiel, enthält aber ein <div> anstelle eines <p>.

CSS

Zunächst definieren wir helle und dunkle linear-gradient()-Werte als benutzerdefinierte Eigenschaften.

css
:root {
  /*  light dark gradients  */
  --light-grad: linear-gradient(135deg, var(--light-bg) 20%, var(--light-code));
  --dark-grad: linear-gradient(45deg, var(--dark-bg) 30%, var(--dark-code));
}

Anschließend verwenden wir die benutzerdefinierten Eigenschaften mit light-dark(), um die Eigenschaft background-image anhand des aktiven Farbschemas festzulegen.

css
section div {
  background-image: light-dark(
    var(--light-grad),
    var(--dark-grad)
  );
}

Ergebnis

Spezifikationen

Spezifikation
CSS Color Module Level 5
# light-dark

Browser-Kompatibilität

Siehe auch