Как определить изменение цветовой схемы в javascript? - PullRequest
2 голосов
/ 07 января 2020

Я могу использовать window.matchMedia, чтобы определить, находится ли пользователь в темном режиме, но как прослушать событие смены темного режима?

Существует ли какой-либо API, подобный:

window.addEventListener('perfers-color-scheme-change', () => {
  // do something
})

Ответы [ 2 ]

4 голосов
/ 07 января 2020

Вы можете добавить MediaQueryListListener , вызвав addListener() на MediaQueryList, возвращаемом Window.matchMedia () :

function activateDarkMode() {
  // set style to dark
}

window.matchMedia("(prefers-color-scheme: dark)").addListener(
  e => e.matches && activateDarkMode()
);


См. Эту статью с инструкциями по Используйте «prefers-color-схема» для обнаружения темного режима macOS с CSS и Javascript

0 голосов
/ 17 апреля 2020

С установщиком инициализации и слушателем 'change'.

let colorSchemeQueryList = window.matchMedia('(prefers-color-scheme: dark)');

const setColorScheme = e => {
  if (e.matches) {
    // Dark
    console.log('Dark mode')
  } else {
    // Light
    console.log('Light mode')
  }
}

setColorScheme(colorSchemeQueryList);
colorSchemeQueryList.addListener(setColorScheme);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...