ToolHub
View All Posts

Web design em modo escuro: Melhores práticas e guia de implementação

O modo escuro ha evolucionado de uma preferência de desenvolvedores a uma expectativa de design generalizada. Mais do 80% dois desenvolvedores usam modo escuro em suas IDE, e os principais sistemas operativos agora incluem temas escuros a nivel de sistema. Os usuarios esperan que os sites web e aplicaciones respeten suas preferências. Esta guia cobre os princípios de design, teoria da cor, implementação CSS e consideraciones de acessibilidade necessárias para criar experiências eficazes de modo escuro.

Por que o modo escuro é importante

O modo escuro no é solo uma escolha estética. Oferece beneficios tangiveis a os usuarios. Em entornos de pouca luz, os fundos escuros reducen a fatiga ocular ao diminuir a quantidade de luz emitida por a tela. Para telas OLED e AMOLED, os píxeles escuros consumen muita menos energia que os píxeles brilhantes, prolongando a duração de a bateria em dispositivos móveis. O modo escuro também crea hierarquia visual a través do contraste, atrayendo a atenção em direção a o conteúdo e os elementos interactivos.

No entanto, um modo escuro mal implementado pode ser pior que no ter nenhum. O alto contraste entre texto branco puro e fundo preto puro pode causar um efecto de halo onde o texto parece borroso o brilhante. A clave é encontrar o equilíbrio correto entre contraste e comodidade.

Teoria da cor para modo escuro

O error mais comum no design de modo escuro é simplesmente invertir o esquema claro. Este abordagem falha porque a percepção da cor muda em fundos escuros. Os cores que se veem vibrantes sobre branco podem parecer chillones o abrumadores em superficies escuras, enquanto que as diferenças sutiles em sombras claras se vuelven invisíveis sobre escuro.

Cores de fundo

Evita usar preto puro (#000000) como fundo. O preto puro produz um contraste excesivo com o texto branco, causando fatiga ocular. Em seu lugar, usa cinzas escuros com um leve matiz que anhadan profundidade e interés visual.

Nivel de fundoCorCaso de uso
Base#0f172aFundo de página
Superficie#1e293bCartões, modales
Elevado#334155Estado hover, menús desplegaveis
Superposiçãorgba(0,0,0,0.5)Fundo de modal

Cores de texto

De maneira similar, evita o branco puro (#ffffff) para o texto do corpo. Usa tons blanquecinos que mantengan a legibilidade enquanto reducen o deslumbramiento. Reserva o branco puro para títulos e acentos.

Cores de acento

Os cores de acento frequentemente necessitam ajustes para o modo escuro. Os cores saturados que funcionam bem sobre fundos brancos podem parecer que vibran em superficies escuras. Reduce ligeramente a saturação das cores de acento e aumenta seu luminosidade para manter a visibilidade sem causar fatiga visual.

Implementação CSS

O abordagem mais mantenivel para o modo escuro é usar propriedades personalizadas CSS (variáveis) com a media query prefers-cor-scheme. Isto te permite definir cores uma vez e mudar temas modificando os valores das variáveis.

Usar propriedades personalizadas CSS

:root {
  --bg: #f8fafc;
  --bg-card: #ffffff;
  --text: #1e293b;
  --text-muted: #64748b;
  --primary: #3b82f6;
  --border: #e2e8f0;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0f172a;
    --bg-card: #1e293b;
    --text: #e2e8f0;
    --text-muted: #94a3b8;
    --primary: #60a5fa;
    --border: #334155;
  }
}

body {
  background: var(--bg);
  color: var(--text);
}

Alternancia manual com JavaScript

Embora prefers-cor-scheme maneja as preferências do sistema, os usuarios também necessitam um interruptor manual. Almacena a preferência em localStorage e aplícala através de um atributo data no elemento raíz.

function toggleTheme() {
  const current = document.documentElement.dataset.theme;
  const next = current === 'dark' ? 'light' : 'dark';
  document.documentElement.dataset.theme = next;
  localStorage.setItem('theme', next);
}

// On page load
const saved = localStorage.getItem('theme');
if (saved) {
  document.documentElement.dataset.theme = saved;
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
  document.documentElement.dataset.theme = 'dark';
}

Logo usa selectores de atributos em CSS junto com o abordagem de media queries:

[data-theme="dark"] {
  --bg: #0f172a;
  --bg-card: #1e293b;
  --text: #e2e8f0;
}

Manejo de hierarquia e profundidade

No modo claro, as sombras transmitem hierarquia. No modo escuro, as sombras são menos visíveis em superficies escuras. Em seu lugar, usa cores de fundo progresivamente mais claros para representar a hierarquia. Cada capa deve ser ligeramente mais clara que a que está embaixo, creando uma hierarquia visual que imita a luz cayendo sobre superficies elevadas.

Imagens e medios em modo escuro

As imagens brilhantes podem parecer discordantes em fundos escuros. Usa filtros CSS para reducir ligeramente o brilho das imagens em modo escuro. Para logos e iconos, proporciona versiones alternativas em claro.

[data-theme="dark"] img {
  filter: brightness(0.9);
}

[data-theme="dark"] .logo-dark {
  display: inline-block;
}

[data-theme="dark"] .logo-light {
  display: none;
}

Consideraciones de acessibilidade

O modo escuro deve cumprir os mesmos estándares de acessibilidade que o modo claro. As pautas WCAG 2.1 requerem uma relação de contraste mínima de 4.5:1 para texto normal e 3:1 para texto grande. Usa ferramentas de comprobação de contraste para testar tua tema escuro e asegurar o cumplimiento.

Erros comuns do modo escuro

Necessitas comprobar o contraste de tua design em modo escuro? Experimenta nossa ferramenta gratuita de comprobação de contraste para asegurar que tuas cores cumplan com os estándares de acessibilidade WCAG.

Comprobar contraste agora

Perguntas frequentes

Devo usar preto puro para o fundo do modo escuro?

No, o preto puro (#000000) crea um contraste excesivo com o texto branco, causando fatiga ocular e efecto de halo. Usa cinzas escuros como #121212, #1e293b o #0f172a em seu lugar. Estes cores proporcionam suficiente contraste para a legibilidade sendo mais suaves para a vista.

Como detectar a preferência de modo escuro do usuário em CSS?

Usa a media query prefers-cor-scheme: @media (prefers-cor-scheme: dark) { /* estilos de modo escuro */ }. Isto aplica automaticamente os estilos escuros quando o usuario habilita o modo escuro na configuração de seu sistema operativo.

Quanto contraste deve ter o texto em modo escuro?

WCAG 2.1 requer uma relação de contraste mínima de 4.5:1 para texto normal e 3:1 para texto grande. Em modo escuro, usa texto cinza claro (#e2e8f0 o #f1f5f9) sobre fundos escuros em vez de branco puro para reducir o deslumbramiento enquanto mantienes suficiente contraste.

Deveria ser o modo escuro a opção predeterminada?

Segue a preferência do sistema do usuário com prefers-cor-scheme. Se no se detecta nenhuma preferência, o modo claro é uma opção predeterminada mais segura porque tem uma compatibilidade mais ampla e a maioria dois usuários preferem o modo claro durante o uso diurno. Proporciona siempre um botão de alternancia para que os usuarios puedan mudar manualmente.

Como manejar imagens em modo escuro?

Usa CSS filter: brightness(0.9) em modo escuro para reducir ligeramente o brilho das imagens, evitando que parezcan demasiado brilhantes sobre fundos escuros. Para logos e iconos, proporciona versiones em claro. Considera usar ajustes de transparência para imagens decorativas.