Semelhante a " Como detectar se o OS X está no modo escuro? " Apenas para navegadores.
Alguém descobriu se existe uma maneira de detectar se o sistema do usuário está no novo modo escuro do OS X no Safari / Chrome / Firefox?
Gostaríamos de mudar o design do nosso site para ser compatível com o modo escuro, com base no modo operacional atual.
Respostas:
O novo padrão é registrado no W3C no nível 5 de consultas de mídia .
NOTA: atualmente disponível apenas no Safari Technology Preview Release 68Caso a preferência do usuário seja
light
:Caso a preferência do usuário seja
dark
:Também existe a opção
no-preference
caso um usuário não tenha preferência. Mas eu recomendo que você use CSS normal nesse caso e faça cascata em seu CSS corretamente.-
-
-
-
-
fonte
window.matchMedia("(prefers-color-scheme: dark)").matches
Se eu tiver algum tempo livre, adicionarei uma solução javascript completa à minha resposta.Se você deseja detectá-lo a partir do JS, pode usar este código:
Para observar as alterações:
fonte
matchMedia
e depois tentará corresponder àprefers-color-scheme: dark
string. Se corresponder, estamos no modo escuro.if (window.matchMedia?('(prefers-color-scheme: dark)').matches) { }
No momento, este assunto (setembro de 2018) está sendo discutido em "Rascunhos do Editor de CSS Working Group" .Foi lançada a especificação (veja acima), disponível como uma consulta de mídia. Algo já chegou ao Safari, veja também aqui . Portanto, em teoria, você pode fazer isso no Safari / Webkit:Mas parece que isso é privado .No MDN, um recurso de mídia CSSinverted-colors
é mencionado . Plug: Eu escrevi sobre o modo escuro aqui .fonte
Eu pesquisei através da API Mozilla, eles não parecem ter variáveis correspondentes à cor das janelas do navegador. Embora eu tenha encontrado uma página que pode ajudá-lo: Como usar estilos de sistema operacional em CSS . Apesar do cabeçalho do artigo, as cores são diferentes para Chrome e Firefox.
fonte
De acordo com a Mozilla, este é o método preferido em setembro de 2019
fonte