light-dark()

Функція <color> CSS light-dark() (світла-темна) дає змогу задавати властивості два кольори, з яких один буде повернений залежно від того, обрав розробник світлу чи темну палітру, або чи попросив користувач використовувати світлу, чи темну колірну тему – без необхідності обгортати кольори теми в запит ознаки медіа prefers-color-scheme. Користувачі можуть сповіщати про свої побажання щодо колірної палітри за допомогою своїх системних налаштувань (наприклад, світлого чи темного режиму) або налаштувань користувацького агента. Функція light-dark() дає змогу надавати два значення кольору там, де приймається будь-яке значення <color>. Колірна функція CSS light-dark() повертає перше значення, якщо користувацьке налаштування задано як light або не задано, і друге значення, якщо користувацьке налаштування задано як dark.

Щоб увімкнути підтримку колірної функції light-dark(), властивість color-scheme повинна мати значення light dark, яке зазвичай задається на псевдокласі :root.

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

Синтаксис

/* Іменовані значення кольорів */
color: light-dark(black, white);

/* Колірні значення RGB */
color: light-dark(rgb(0 0 0), rgb(255 255 255));

/* Своєрідні властивості */
color: light-dark(var(--light), var(--dark));

Значення

Функційний запис: light-dark(light-color, dark-color)

light-color

Значення <color>, яке буде задано для світлої color-scheme.

dark-color

Значення <color>, яке буде задано для темної color-scheme.

Формальний синтаксис

Інформація про синтаксис недоступна

Жодного значення не знайшлося в базі даних.

Приклад

Задання кольорів на основі колірної палітри

Усталено, в браузерах, що це підтримують, колір, повернений колірною функцією light-dark(), залежить від налаштувань користувача, заданих через налаштування операційної системи (наприклад, світлий або темний режим) або налаштування користувацького агента. Також це налаштування можна змінити в інструментах розробника в браузері.

HTML

Додано три розділи, щоб забезпечити можливість вибору світлих кольорів, темних кольорів та кольорів, вибраних на основі обраної користувачем колірної палітри.

<h1>Функція CSS <code>light-dark()</code></h1>
<section>
  <h2>Автоматично</h2>
  <p>
    Цей розділ реагуватиме на користувацькі налаштування системи або
    користувацького агента.
  </p>
</section>
<section class="light">
  <h2>Світла</h2>
  <p>Цей розділ буде світлим завдяки <code>color-scheme: light;</code>.</p>
</section>
<section class="dark">
  <h2>Темна</h2>
  <p>Цей розділ буде темним завдяки <code>color-scheme: dark;</code>.</p>
</section>

CSS

Додано кольори як для світлої, так і для темної тем. Також для документа на :root задано color-scheme, щоб увімкнути колірну функцію light-dark() для всього документа.

:root {
  /* це повинно бути задано, щоб перемикатися між світлим і темним */
  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));
}

На додачу до вмикання функції light-dark(), властивість color-scheme дозволяє перевизначати колірну палітру користувача для розділів документа. Примусове використання світлої або темної колірної палітри для розділу сторінки можна зробити, задавши властивість color-scheme зі значенням light або dark.

Примітка: Загалом, так не слід робити, а тут це використовується для демонстрації. Якщо користувач висловлює побажання, його налаштування зазвичай не слід відкидати.

.light {
  /* примусово використовувати color-scheme light */
  color-scheme: light;
}
.dark {
  /* примусово використовувати color-scheme dark */
  color-scheme: dark;
}

Результат

Специфікації

Якщо ви це бачите — значить, щось трапилося з цією сторінкою.

Сумісність із браузерами

Якщо ви це бачите — значить, щось трапилося з цією сторінкою.

Дивіться також