Dark mode
Domine o modo escuro no Tailwind CSS com a nova arquitetura CSS-first. Aprenda a configurar por sistema ou manualmente, e aplique as melhores práticas de design.
A implementação do modo escuro passou por uma evolução importante no Tailwind CSS. Com a mudança para a arquitetura baseada em CSS nativo (CSS-first), a configuração que antes dependia da propriedade darkMode dentro do arquivo JavaScript tailwind.config.js foi descontinuada.
Agora, o framework gerencia variantes de forma nativa e automática, alinhando-se diretamente com os comportamentos modernos de folhas de estilo e seletores CSS.
Estratégias de Ativação Suportadas
O Tailwind oferece duas abordagens principais para alternar as interfaces entre os modos claro e escuro:
1. Modo Baseado em Sistema (Padrão)
Por padrão, o framework monitora nativamente a media query prefers-color-scheme do navegador. Se o sistema operacional do usuário estiver configurado para o tema escuro, os estilos prefixados com dark: serão aplicados de forma totalmente automática, sem necessidade de qualquer linha de configuração extra.
2. Modo Baseado em Seletor ou Classe
Se você deseja que o usuário controle a alternância de temas manualmente através de um botão (gerenciando uma classe como .dark ou um atributo na tag <html>), o Tailwind permite definir essa variante diretamente no seu arquivo CSS principal utilizando a diretiva @variant:
CSS
@import "tailwindcss";
/* Define que o modificador dark: deve procurar pela classe .dark no elemento raiz */
@variant dark (&:where(.dark, .dark *));
Utilizando o Prefixo dark: para Variações Visuais
Uma vez definido o comportamento no CSS, a aplicação das classes utilitárias no HTML permanece direta e intuitiva. Basta utilizar o modificador dark: seguido da classe que deve sobrescrever o estilo original:
HTML
<div class="bg-white text-slate-900 dark:bg-slate-950 dark:text-slate-50 p-6 rounded-2xl border border-slate-100 dark:border-slate-800 transition-colors">
Este bloco adapta sua aparência de forma fluida de acordo com o tema ativo.
</div>
-
bg-whiteé substituído pordark:bg-slate-950no modo escuro. -
text-slate-900é substituído pordark:text-slate-50. -
border-slate-100passa a serdark:border-slate-800.
Exemplo Prático com Alternância Manual (JavaScript)
Se optar pela estratégia baseada em classe, você pode gerenciar a raiz da página de forma simples para alternar os estados visuais da aplicação:
HTML
<!DOCTYPE html>
<html lang="pt-BR" class="dark">
<head>
<meta charset="UTF-8">
<title>Modo Escuro com Tailwind</title>
<link rel="stylesheet" href="output.css">
</head>
<body class="bg-white text-slate-800 dark:bg-slate-950 dark:text-slate-100 min-h-screen flex items-center justify-center transition-colors duration-200">
<div class="text-center space-y-4">
<p class="text-sm font-medium text-slate-500 dark:text-slate-400">
Clique abaixo para testar a reatividade dos componentes.
</p>
<button
onclick="document.documentElement.classList.toggle('dark')"
class="px-4 py-2 text-sm font-semibold rounded-xl bg-slate-900 text-white hover:bg-slate-800 dark:bg-slate-100 dark:text-slate-900 dark:hover:bg-slate-200 transition-all active:scale-95"
>
Alternar Tema
</button>
</div>
</body>
</html>
Combinações Comuns e Semânticas
Para construir interfaces sofisticadas e confortáveis para a leitura em ambientes de baixa luminosidade, adote mapeamentos harmônicos entre as escalas:
-
Tipografia:
text-slate-900 dark:text-slate-100 -
Superfícies/Fundos:
bg-white dark:bg-slate-950oubg-slate-50 dark:bg-slate-900 -
Bordas/Linhas:
border-slate-200 dark:border-slate-800 -
Sombras/Elevações:
shadow-xl shadow-slate-100 dark:shadow-none(em fundos muito escuros, sombras tendem a perder a utilidade visual, sendo melhor substituí-las por bordas finas de isolamento).
Melhores Práticas de Engenharia Visual
-
Evite o Preto Puro (
#000000): Para os fundos escuros principais, prefira tons de cinza fechados ou azulados (como as escalasslate,zincouneutralnos níveis900ou950). Eles reduzem consideravelmente o cansaço visual e mantêm uma melhor percepção de profundidade. -
Aproveite Variáveis CSS Nativas: Como a nova arquitetura do Tailwind gera variáveis CSS sob o capô, você também pode redefinir o valor dos seus tokens diretamente dentro de blocos de mídia nativos no CSS, mantendo o markup do HTML ainda mais limpo:
CSS
@theme { --color-surface: #ffffff; } @media (prefers-color-scheme: dark) { :root { --color-surface: #0f172a; } }
No HTML, basta usar bg-surface e o próprio navegador gerenciará a mudança de cor de forma nativa. * Atenção aos Elementos de Mídia: Se a sua página possuir imagens muito claras ou diagramas com fundos brancos, utilize modificadores como dark:opacity-80 para suavizar o brilho dessas mídias quando o modo escuro estiver ativo.