Chrome 96 представляет пробную версию Auto Dark Themes на Android. С помощью этой функции браузер применяет автоматически созданную темную тему к сайтам со светлой тематикой, когда пользователь выбрал темные темы в операционной системе. Пользователи могут отказаться от темных тем, отключив опцию на уровне ОС или в определенной настройке в Chrome.
Зарегистрируйтесь для участия в пробной версии Origin
Вы также можете включить алгоритм затемнения для своих пользователей через пробную версию Origin. Это позволит вам проверить, как Auto Dark Theme работает с вашими KPI.
Перейдите к документации, чтобы узнать , как настроить пробную версию Origin , а затем зарегистрируйтесь для получения пробной версии AutoDarkMode Origin , чтобы получить токен.
Проверьте автоматическую темную тему на своем устройстве
С DevTools
Чтобы включить автоматическую темную тему в DevTools:
- Нажмите на меню с тремя точками.
- Выберите Дополнительные инструменты , затем Рендеринг .
- Выберите Включить для параметра Эмулировать автоматический темный режим .
На телефоне Android
Чтобы протестировать автоматическую темную тему на вашем телефоне Android:
- Перейдите по адресу
chrome://flags
и включите эксперимент#darken-websites-checkbox-in-theme-setting
. - Затем нажмите на меню с тремя точками, выберите «Настройки» , затем «Тема» и установите флажок «Применять темные темы к сайтам, когда это возможно» .
Теперь светлые страницы на телефоне будут затемнены.
Настройка каждого элемента
Несмотря на то, что мы стремимся к тому, чтобы Auto Dark Theme давала хорошие результаты во всех случаях, первые разговоры с разработчиками показали, что они хотели бы настроить определенные элементы, чтобы лучше адаптировать их к желаемому внешнему виду и ощущениям.
В этом исходном тестовом варианте такие настройки возможны с помощью JavaScript для определения того, находится ли пользователь в режиме Auto Dark Theme, а затем настройки желаемых элементов.
Обнаружение автоматической темной темы
Чтобы определить, находится ли пользователь в Auto Dark Theme, создайте элемент с background-color
установленным на canvas
, и цветовой схемой, установленной на light. Если вычисленный цвет для фона отличается от белого ( rgb(255, 255, 255)
), то к странице применяется Auto Dark Theme.
<div id="detection"
style="display: none; background-color: canvas; color-scheme: light">
</div>
const detectionDiv = document.querySelector('#detection');
// If the computed style is not white then the page is in Auto Dark Theme.
const isAutoDark = getComputedStyle(detectionDiv).backgroundColor != 'rgb(255, 255, 255)';
// Update element styles when Auto Dark Theme is applied.
if (isAutoDark) {
const myElement = document.querySelector('#my-element');
myElement.classList.add('autoDarkOnlyStyle');
}
Настройка большого количества элементов
Решение выше может быть сложным для масштабирования, если вам нужно настроить большее количество элементов. Альтернативой является использование автоматического определения темной темы для добавления класса маркера в тело страницы:
function setAutoDarkClass() {
// We can also use JavaScript to generate the detection element.
const detectionDiv = document.createElement('div');
detectionDiv.style.display = 'none';
detectionDiv.style.backgroundColor = 'canvas';
detectionDiv.style.colorScheme = 'light';
document.body.appendChild(detectionDiv);
// If the computed style is not white then the page is in Auto Dark Theme.
const isAutoDark = getComputedStyle(detectionDiv).backgroundColor != 'rgb(255, 255, 255)';
// remove the detection element from the DOM.
document.body.removeChild(detectionDiv);
// Set the marker class on the body if in Auto Dark Theme.
if (isAutoDark) {
document.body.classList.add('auto-dark-theme');
}
}
document.addEventListener("DOMContentLoaded", setAutoDarkClass);
Затем используйте CSS для настройки элементов по мере необходимости:
.auto-dark-theme > #my-element {
border-color: red;
}
API настройки поэлементно все еще находится на ранней стадии разработки. Мы работаем с командами по стандартам, чтобы предоставить разработчикам более выразительный API для отказа. Вы можете следить за обсуждением в этой проблеме GitHub .
Как отказаться от автоматической темной темы
Помимо уважения выбора пользователя на его устройстве, темные темы предоставляют пользователям такие преимущества, как улучшение срока службы батареи и доступность. Вместо того, чтобы отказываться от Auto Dark Theme, мы настоятельно рекомендуем реализовать собственную темную тему, чтобы уважать предпочтения пользователя и сохранить эти преимущества.
Однако в случае, если реализовать собственную темную тему не представляется возможным, а результат, полученный с помощью Auto Dark Theme, неудовлетворителен, можно отказаться от этой функции.
Использование метатега
Первая альтернатива для отказа от Auto Dark Theme — это добавление следующего метатега в заголовок вашей страницы. Преимущество использования метатега в том, что он предотвращает применение Auto Dark Theme вообще, что может вызвать «вспышку затемненного контента».
<head>
<meta name="color-scheme" content="only light">
...
</head>
Отказ от участия по каждому элементу
Второй альтернативой для отказа является установка значения свойства CSS color-scheme
на only light
. Несмотря на то, что отказ по элементам может использоваться для отказа всей страницы от автоматического темного режима, преимущество этого подхода заключается в том, что он позволяет отказаться только от определенных частей страницы:
#my-element {
color-scheme: only light;
}
По-прежнему можно использовать этот подход, чтобы отключить автоматическую темную тему для всей страницы, установив цветовую схему в элементе :root
:
:root {
color-scheme: only light;
}
Отправьте нам отзыв!
Автоматическая темная тема все еще находится в стадии разработки, и мы ждем отзывов по всем аспектам ее реализации: от результатов алгоритма затемнения до API-интерфейсов разработчиков для настройки элементов и отказа от нее.
Вы можете отправить нам свой отзыв несколькими способами:
- По результатам опроса разработчиков .
- Отправка сообщения об ошибке в проекте Chromium .
- Через форму обратной связи Origin Trial .
Фото Феликса Бесомба .