0Pricing
React Academy · Lección

Variables CSS para cambiar de tema

Definir una paleta de colores completa con propiedades personalizadas de CSS y cambiar de tema alternando un atributo data

Variables CSS para cambiar de tema es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Definición de tokens de color en :root

Las propiedades personalizadas de CSS (variables) definidas en :root están disponibles globalmente en toda la hoja de estilos. Defina una paleta de colores completa una sola vez —fondos, colores de texto, superficies y bordes— y haga referencia a ella en todas partes. Esta única fuente de verdad hace que cambiar de tema sea trivial.

Anulaciones del tema oscuro con data-theme

Cuando se establece un atributo data-theme="dark" en document.documentElement, un selector CSS como [data-theme='dark'] sobrescribe las variables raíz con valores oscuros. Los componentes hacen referencia a var(--color-bg) y adoptan automáticamente los nuevos valores sin cambios en el código.

Variables clave que se deben definir

Como mínimo, defina: --color-bg (fondo de la página), --color-text (texto principal), --color-primary (color de marca), --color-surface (fondo de tarjetas o paneles) y --color-border (separadores). Un conjunto coherente de tokens evita que aparezcan valores de color ad hoc en los componentes.

Aplicación de variables en los estilos de componentes

En el CSS de sus componentes, haga referencia a variables como background: var(--color-bg) y color: var(--color-text). También puede proporcionar un valor de respaldo: var(--color-bg, #ffffff). El navegador resuelve la variable al pintar, por lo que una sola clase funciona tanto para temas claros como oscuros.

Transición fluida al cambiar de tema

Añada transition: background-color 200ms, color 200ms al selector :root. Cuando cambia el atributo data-theme, todos los elementos que usan variables CSS se animan simultáneamente hacia sus nuevos valores. Esto proporciona un acabado pulido sin código de animación en JS.

Variables CSS frente a estilos en línea controlados por JS

Gestionar el tema mediante variables CSS es mejor que establecer estilos en línea desde JavaScript. El navegador gestiona todas las recalculaciones de estilos de forma nativa, no se producen renderizados adicionales de React por cada componente hijo tematizado y la cascada de CSS gestiona la herencia automáticamente. JS solo necesita alternar un atributo en el elemento raíz.

Alternativa a nivel del sistema operativo con prefers-color-scheme

Puede combinar variables CSS con la consulta @media (prefers-color-scheme: dark) como alternativa que solo usa CSS. Defina las anulaciones oscuras dentro de la consulta de medios, además del selector data-theme o en su lugar. Esto garantiza que el modo oscuro funcione incluso si JavaScript aún no se ha ejecutado.

Combinación de data-theme con una alternativa mediante consulta de medios

El enfoque más sólido combina ambos mecanismos: la consulta @media proporciona el valor predeterminado del sistema operativo, mientras que un atributo data-theme permite que el usuario lo anule mediante JavaScript. Cuando el atributo está presente, prevalece por su especificidad; cuando está ausente, se aplica la consulta de medios.

Imágenes para modo oscuro

Para las imágenes que se ven mal sobre fondos oscuros, use el elemento HTML picture con un elemento hijo source media="(prefers-color-scheme: dark)". El navegador selecciona automáticamente la variante oscura. Para los iconos SVG en CSS, puede usar filter: invert(1) como aproximación rápida.

Variables de tema con ámbito

Las variables CSS también pueden limitarse a componentes individuales definiéndolas en el elemento raíz de un componente en lugar de :root. Esto permite aplicar temas por componente, como una barra lateral con su propio token de fondo, diferente del fondo de la página, que aun así cambia correctamente con el control global del tema.

Depuración de variables CSS en DevTools

Chrome DevTools muestra los valores resueltos de las variables CSS en el panel Styles. Haga clic en la referencia de la variable para ir a su definición. Así resulta fácil verificar que se está aplicando el token oscuro o claro correcto a cualquier elemento. También puede editar los valores de las variables directamente en el panel.

Propiedades personalizadas de CSS para temas

¿Qué selector CSS se usa para definir propiedades personalizadas globales de CSS que se aplican a todo el documento?

Resumen de la lección: variables CSS para cambiar de tema

Las propiedades personalizadas de CSS en :root proporcionan un sistema centralizado de tokens para los temas. Alterne un atributo data-theme en el elemento html para cambiar de tema al instante. Añada transiciones CSS para una animación fluida, use la consulta de medios prefers-color-scheme como alternativa que solo usa CSS y evite las anulaciones de estilos en JS por componente.

Preguntas frecuentes

¿La lección «Variables CSS para cambiar de tema» es gratis?

Sí — el texto completo de «Variables CSS para cambiar de tema» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Variables CSS para cambiar de tema»?

Definir una paleta de colores completa con propiedades personalizadas de CSS y cambiar de tema alternando un atributo data Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Variables CSS para cambiar de tema»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Detectar el esquema de colores del sistema
  2. Variables CSS para cambiar de tema
  3. React Context para el estado del tema
  4. Conservar el tema y evitar el destello visual
← Volver a React Academy