React Academy · Aula

Variáveis CSS para alternância de temas

Defina uma paleta de cores completa com propriedades personalizadas de CSS e alterne os temas modificando um atributo de dados.

Aula 2 de 413 etapas

Variáveis CSS para alternância de temas é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Definição de tokens de cor em :root

As propriedades personalizadas do CSS (variáveis) definidas em :root ficam disponíveis globalmente em toda a folha de estilos. Defina uma paleta de cores completa uma única vez — planos de fundo, cores de texto, superfícies e bordas — e faça referência a ela em todos os lugares. Essa única fonte de verdade torna trivial alternar o tema.

Substituições do tema escuro com data-theme

Quando um atributo data-theme="dark" é definido em document.documentElement, um seletor CSS como [data-theme='dark'] substitui as variáveis da raiz por valores escuros. Os componentes fazem referência a var(--color-bg) e passam automaticamente a usar os novos valores, sem nenhuma alteração no código.

Principais variáveis a definir

No mínimo, defina: --color-bg (plano de fundo da página), --color-text (texto principal), --color-primary (cor da marca), --color-surface (plano de fundo de cartões e painéis) e --color-border (divisórias). Um conjunto consistente de tokens impede o surgimento de valores de cor improvisados nos componentes.

Aplicação de variáveis nos estilos dos componentes

No CSS do componente, faça referência a variáveis como background: var(--color-bg) e color: var(--color-text). Você também pode fornecer um valor alternativo: var(--color-bg, #ffffff). O navegador resolve a variável no momento da renderização, portanto uma única classe funciona para os temas claro e escuro.

Transição suave durante a alternância

Adicione transition: background-color 200ms, color 200ms ao seletor :root. Quando o atributo data-theme muda, todos os elementos que usam variáveis CSS animam simultaneamente até seus novos valores. Isso cria uma experiência refinada sem qualquer código de animação em JS.

Variáveis CSS versus estilos embutidos controlados por JS

Gerenciar o tema por meio de variáveis CSS é superior a definir estilos embutidos a partir de JavaScript. O navegador gerencia nativamente todos os recálculos de estilo, não há novas renderizações do React acionadas para cada componente filho tematizado e a cascata do CSS gerencia a herança automaticamente. O JS só precisa alternar um atributo no elemento raiz.

Alternativa no nível do OS com prefers-color-scheme

Você pode combinar variáveis CSS com a consulta @media (prefers-color-scheme: dark) como alternativa exclusiva de CSS. Defina as substituições escuras dentro da consulta de mídia além do seletor data-theme (ou em vez dele). Isso garante que o modo escuro funcione mesmo que o JavaScript ainda não tenha sido executado.

Combinação de data-theme com alternativa de consulta de mídia

A abordagem mais robusta combina os dois mecanismos: a consulta @media fornece o padrão do OS, enquanto um atributo data-theme permite a substituição do usuário por meio de JavaScript. Quando o atributo está presente, ele prevalece por causa da especificidade; quando está ausente, a consulta de mídia entra em ação.

Imagens no modo escuro

Para imagens que ficam ruins em planos de fundo escuros, use o elemento HTML picture com um elemento filho source media="(prefers-color-scheme: dark)". O navegador seleciona automaticamente a variante escura. Para ícones SVG no CSS, você pode usar filter: invert(1) como uma aproximação rápida.

Variáveis de tema com escopo

As variáveis CSS também podem ter escopo limitado a componentes individuais, sendo definidas no elemento raiz de um componente em vez de :root. Isso permite a tematização por componente, como uma barra lateral com seu próprio token de plano de fundo, diferente do plano de fundo da página, e que ainda alterna corretamente com a alternância de tema global.

Depuração de variáveis CSS no DevTools

O Chrome DevTools mostra os valores resolvidos das variáveis CSS no painel Estilos. Clique na referência da variável para ir até sua definição. Isso facilita verificar se o token claro ou escuro correto está sendo aplicado a qualquer elemento. Você também pode editar os valores das variáveis diretamente no painel.

Propriedades personalizadas do CSS para tematização

Qual seletor CSS é usado para definir propriedades personalizadas globais que se aplicam a todo o documento?

Recapitulação da lição: variáveis CSS para alternância de temas

As propriedades personalizadas do CSS em :root fornecem um sistema centralizado de tokens para os temas. Alterne um atributo data-theme no elemento HTML para mudar de tema instantaneamente. Adicione transições CSS para uma animação suave, use a consulta de mídia prefers-color-scheme como alternativa exclusiva de CSS e evite substituições de estilos em JS por componente.

Grátis para começar

Aprenda React com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
88
Aulas
324

Perguntas Frequentes

A aula “Variáveis CSS para alternância de temas” é grátis?

Sim — o texto completo de “Variáveis CSS para alternância de temas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Variáveis CSS para alternância de temas”?

Defina uma paleta de cores completa com propriedades personalizadas de CSS e alterne os temas modificando um atributo de dados. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Variáveis CSS para alternância de temas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Detectando o esquema de cores do sistema
  2. Variáveis CSS para alternância de temas
  3. Contexto do React para o estado do tema
  4. Persistindo o tema e evitando o flash
← Voltar para React Academy