light-dark() CSS-Funktion
Baseline
2024
Neu verfügbar
Seit May 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 eine Farbe oder ein Bild basierend auf dem aktiven Farbschema zurück, ohne dass ein prefers-color-scheme Medienmerkmal erforderlich ist.
Syntax
/* 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 light-dark()-Funktion hat zwei Formen:
- Akzeptiert zwei
<color>-Werte:<color>(hell)-
Der
<color>-Wert, der verwendet wird, wenn dascolor-schemelightist oder keine Präferenz festgelegt ist. <color>(dunkel)-
Der
<color>-Wert, der verwendet wird, wenn dascolor-schemedarkist.
- Akzeptiert zwei
<image>-Werte:<image>(hell)-
Der
<image>-Wert, der verwendet wird, wenn dascolor-schemelightist oder keine Präferenz festgelegt ist. <image>(dunkel)-
Der
<image>-Wert, der verwendet wird, wenn dascolor-schemedarkist. none-
Das Schlüsselwort
noneerzeugt ein vollständig transparentes Bild ohne natürliche Größe.
Beschreibung
Benutzer können ihre Farbschema-Präferenz über ihre Betriebssystemeinstellungen (z.B. heller oder dunkler Modus) oder ihre Benutzeragenten-Einstellungen angeben. Die light-dark()-Funktion ermöglicht es, entweder zwei Farbwerte bereitzustellen, bei denen jeder <color>-Wert akzeptiert wird, oder zwei Bildwerte, bei denen jeder <image>-Wert akzeptiert wird. Die light-dark()-Funktion gibt den ersten Wert zurück, wenn das verwendete Farbschema light ist oder keine Präferenz festgelegt ist, und den zweiten Wert, wenn das verwendete Farbschema dark ist.
Um Unterstützung für die light-dark()-Farb-Funktion zu aktivieren, muss das color-scheme den Wert light dark haben, der normalerweise auf der :root Pseudoklasse festgelegt ist.
: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
>Festlegen von Farben basierend auf einem Farbschema
Standardmäßig hängt die von der light-dark()-Farbfunktion zurückgegebene Farbe in unterstützenden Browsern von der Benutzerpräferenz ab, die über die Einstellungen des Betriebssystems (z.B. heller oder dunkler Modus) oder über die Einstellung des Benutzeragenten festgelegt ist. Sie können diese Einstellung auch in den Entwicklertools des Browsers ändern.
HTML
Wir fügen drei Abschnitte ein, um helle Farben, dunkle Farben und die auf dem vom Benutzer bevorzugten Farbschema ausgewählten Farben anzusprechen.
<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 fügen Farben für sowohl helle als auch dunkle Themen ein. Wir definieren auch color-scheme für das Dokument auf der :root, um die light-dark()-Farb-Funktion für das gesamte Dokument zu aktivieren.
: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));
}
Zusätzlich zur Aktivierung der light-dark()-Funktion ermöglicht die color-scheme-Eigenschaft das Überschreiben des Farbschemas eines Benutzers für Dokumentabschnitte. Einen Seitenabschnitt zu zwingen, nur ein helles oder dunkles Farbschema zu verwenden, kann durch Setzen der color-scheme-Eigenschaft auf light oder dark erfolgen.
Hinweis: Im Allgemeinen sollte dies nicht getan werden, wir verwenden es hier zu Demonstrationszwecken. Wenn der Benutzer eine Präferenz getroffen hat, sollten Sie seine Präferenzen im Allgemeinen nicht überschreiben.
.light {
/* forces light color-scheme */
color-scheme: light;
}
.dark {
/* forces dark color-scheme */
color-scheme: dark;
}
Ergebnis
Festlegen eines Verlaufs-Hintergrunds basierend auf einem Farbschema
Dieses Beispiel verwendet denselben HTML-Code wie das vorherige Beispiel, beinhaltet jedoch ein <div> anstelle eines <p>.
CSS
Zuerst definieren wir helle und dunkle linear-gradient()-Werte als benutzerdefinierte Eigenschaften.
: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));
}
Dann verwenden wir die benutzerdefinierten Eigenschaften mit light-dark(), um die background-image-Eigenschaft basierend auf dem aktiven Farbschema festzulegen.
section div {
background-image: light-dark(
var(--light-grad),
var(--dark-grad)
);
}
Ergebnis
Spezifikationen
| Spezifikation |
|---|
| CSS Color Module Level 5> # light-dark> |