Pular para o conteúdo principal

SVGs responsivos ao dark mode

Fazer ícones em SVGs responsivos a temas escuros é bem simples para quem tem conhecimentos básicos de CSS.

Compreendendo o código do SVGs

Arquivos SVG são diferente de uma imagem rasterizada. Ele é uma instrução em código dos contornos da ilustração que o computador interpreta, dando ao SVG a capacidade de ser expandido para a resolução que você quiser. Isso também é chamado de imagem vetorizada.

A estrutura do SVG é identica ao de qualquer arquivo HTML. Se você abrir o favicon desse site em um editor de texto, verá que seu código dispõe de um círculo, definido pela tag <circle> em um texto definido pela tag <text>:

<g>
<circle
id="path234"
cx="105.02773"
cy="105.02773"
r="104.81809" />
<text
xml:space="preserve"
transform="matrix(0.46633127,0,0,-0.46633127,-78.576085,282.65555)"
id="text398"><tspan
x="184.33605"
y="477.84502"
id="tspan1073"><tspan id="tspan1071">DN</tspan></tspan></text>
</g>

Adicionando um <style> ao SVG

Arquivos SVGs, permitem que você adicione css inline usando tag <style> dentro deles. Dentro das especificações do CSS, você vai encontrar a media query prefers-color-scheme: dark, que altera a cor do círculo e do texto quando o dispositivo do usuário usa o tema escuro.

@media (prefers-color-scheme: dark) {
circle {
fill: #ffd5d5;
}
text {
fill: #bd1f2e;
}
}