Dark mode com uma linha de codigo
Boa noite galera.
Aqui vai uma tecnica que vai facilitar muito a implementacao do dark mode, e pelo que percebi nao eh muito conhecida.
A linha magica:
<meta name="color-scheme" content="light dark">
O que essa meta tag faz: ela diz pro seu navegador que seu site esta preparado para usar o dark mode. Assim ele utiliza o stylesheet interno dele com as cores apropriadas.
Alem disso, a ordem dos temas pode ser alterado, no exemplo acima a preferencia eh do tema light, se quisermos dar preferencia pelo tema escuro, basta escrever dark light
no conteudo.
Porem esse esquema eh bem limitado, se alguma cor do tema padrao for trocada o outro tema ira herda-la e provavelmente nao tera o efeito desejado, se voce gosta do tradicional preto no branco essa linha basta. Para ter as cores do seu jeito vamos indicar isso usando CSS.
Personalizando as cores
Para conseguirmos utilizar cores nao padroes usamos uma media query para indicarmos as cores desejadas para cada tema. No exemplo abaixo expecificamos uma cor de font para o elemento h1
no tema escuro, ao inves de branco foi escolhido cinza:
@media (prefers-color-scheme: dark) {
h1 {
color: gray;
}
}
Isso eh necessario se voce nao quer a cor padrao ou se voce personalizou ela para o outro tema.
Note que a meta tag so indica qual eh o tema padrao para o navegador, eh o jeito do desenvolvedor indicar para os usuarios o tema pretendido.
Notas
- A meta tag possui uma opcao CSS de mesmo nome mas que pode ser aplicado para cada elemento.
Espero que seja util pra voces tambem. Abracos e ate a proxima.
Referencias
- https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme
- https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
NB
Perdao pela falta de acentos, eu troquei de laptop e ainda nao configurei.
Eu sou back-end entao o preto no branco padrao eh meu esquema preferido de cores.
Taí... uma aboradagem simples. Parabéns.
Existe alguma maneira de modificar esse meta Name via Js?
Obrigado pelo post, era exatamente o que eu estava procurando !!!
Voce poderia dar uma dica de como usar no react? Abracos!
Massa demais! Não sabia da existencia dessa metatag. Obrigado pelo post
Não conhecia, muito obrigado!
Que show, não sabia! Obrigada pelo post!
Caramba, tava me preparando pra fazer um projeto com laravel e o dark mode pra mim seria um grande desafio, muito obrigado!!
Achei bem interessante e pretendo me aprofundar um pouco mais nesse tema.
Uma coisa que reparei, é que se eu estilizar uma div com o fundo branco, por exemplo, ao alterar o tema de light pra dark e vice-versa, essa div não muda de cor.
Existe alguma forma de fazer todos os elementos da página mudarem a cor? E não somente o fundo e a fonte?
Muito massa, abordagem simples e objetiva pra quem quer uma implementação simples.
Muito bom, parabéns!
Adorei mesmo o modo como usou para diferenciar
Ótimo tópico cara, nunca tinha usado essa tag.
Achei tão daora isso, que fiz um vídeo mostrando na prática e como personalizar também: https://youtu.be/kuDuw67UYYc
Quem quiser conferir, fica aí o link.
Caramba, que conteúdo sensacional.