Dark mode en Tailwind: estrategia y consistencia

Aprende a plantear modo oscuro de forma mantenible con utilidades y variantes dark: sin duplicar diseño.

Dark mode no es invertir colores al azar: necesitas contraste, jerarquía y estados coherentes.

En Tailwind se trabaja con variantes dark: para adaptar fondo, texto y bordes sin duplicar todo el CSS.

La práctica profesional es definir tokens visuales claros y aplicarlos de forma repetible en componentes.

En esta lección montarás un bloque que funciona en light/dark con una sola estructura.

  • Si la jerarquía visual no funciona en modo claro, en oscuro funcionará peor.
  • Empieza definiendo niveles: fondo principal, superficie, texto base y texto secundario.
  • Después adapta cada nivel con dark: sin cambiar espaciado ni estructura.
  • Mantener el mismo ritmo visual evita tener dos diseños distintos difíciles de mantener.
  • La variante dark: modifica utilidades cuando el modo oscuro está activo.

Diseña primero la jerarquía, luego el tema

Si la jerarquía visual no funciona en modo claro, en oscuro funcionará peor.

Empieza definiendo niveles: fondo principal, superficie, texto base y texto secundario.

Después adapta cada nivel con dark: sin cambiar espaciado ni estructura.

Mantener el mismo ritmo visual evita tener dos diseños distintos difíciles de mantener.

Cómo aplicar dark:

La variante dark: modifica utilidades cuando el modo oscuro está activo.

Contraste y accesibilidad

No todo texto claro sobre oscuro tiene buen contraste real.

Evita usar tonos demasiado apagados para texto principal en dark mode.

Prueba foco y hover en ambos temas para no romper interacción.

Haz revisión visual rápida en móvil y desktop antes de cerrar el componente.

Tailwind CSS
13

Dark mode en Tailwind: estrategia y consistencia

Aprende a plantear modo oscuro de forma mantenible con utilidades y variantes dark: sin duplicar diseño.

Código del tema: class="bg-white dark:bg-slate-900"

📘 Teoría

Diseña primero la jerarquía, luego el tema

Si la jerarquía visual no funciona en modo claro, en oscuro funcionará peor.

1

Empieza definiendo niveles: fondo principal, superficie, texto base y texto secundario.

2

Después adapta cada nivel con dark: sin cambiar espaciado ni estructura.

3

Mantener el mismo ritmo visual evita tener dos diseños distintos difíciles de mantener.

Cómo aplicar dark:

La variante dark: modifica utilidades cuando el modo oscuro está activo.

Superficie adaptable light/dark
<article class="rounded-xl border border-slate-200 bg-white p-6 text-slate-900 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-100">Contenido</article>

Contraste y accesibilidad

No todo texto claro sobre oscuro tiene buen contraste real.

1

Evita usar tonos demasiado apagados para texto principal en dark mode.

2

Prueba foco y hover en ambos temas para no romper interacción.

3

Haz revisión visual rápida en móvil y desktop antes de cerrar el componente.

🧪 Aprende probando

Ejemplo Demo: tarjeta compatible con dark mode Ejemplo con clases base y variantes dark: manteniendo consistencia de componente.
Ejemplo Demo interactiva: toggle dark mode y estrategia class vs media Compara enfoques de activación y prueba un toggle con JavaScript para validar experiencia final.

🏁 Retos

Reto Reto: añade soporte dark a un bloque Completa las utilidades dark: para fondo y texto en una tarjeta.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Tailwind CSS.

Test de Tailwind CSS

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .