Colores de Tailwind CSS: guía completa del sistema de tonos
Embed This Widget
Add the script tag and a data attribute to embed this widget.
Embed via iframe for maximum compatibility.
<iframe src="https://colorfyi.com/iframe/entity//" width="420" height="400" frameborder="0" style="border:0;border-radius:10px;max-width:100%" loading="lazy"></iframe>
Paste this URL in WordPress, Medium, or any oEmbed-compatible platform.
https://colorfyi.com/entity//
Add a dynamic SVG badge to your README or docs.
[](https://colorfyi.com/entity//)
Use the native HTML custom element.
Tailwind CSS incluye uno de los sistemas de color más referenciados en el desarrollo web. Su convención de nomenclatura de tonos — números del 50 al 950 — se ha convertido en un estándar de la industria que influye en herramientas de diseño, otros frameworks CSS y sistemas de diseño personalizados mucho más allá de los proyectos que realmente usan Tailwind. Entender cómo está estructurado este sistema, cómo extenderlo y cómo evolucionó en Tailwind v4 te brinda tanto una habilidad práctica como un modelo mental para el diseño de escalas de color.
Descripción general de la paleta predeterminada
La paleta predeterminada de Tailwind contiene 22 familias de colores, cada una con 11 tonos (del 50 al 950). Algunos colores específicos — black, white, transparent e inherit — también están disponibles como utilidades de valor único.
Las familias de color principales en la paleta predeterminada son:
| Familia | Carácter del matiz | Más claro (50) | Más oscuro (950) |
|---|---|---|---|
slate |
Gris azulado frío | #F8FAFC | #020617 |
gray |
Gris neutro | #F9FAFB | #030712 |
zinc |
Gris ligeramente cálido | #FAFAFA | #09090B |
neutral |
Gris puro | #FAFAFA | #0A0A0A |
stone |
Gris beige cálido | #FAFAF9 | #0C0A09 |
red |
Rojo | #FEF2F2 | #450A0A |
orange |
Naranja | #FFF7ED | #431407 |
amber |
Amarillo-naranja | #FFFBEB | #451A03 |
yellow |
Amarillo | #FEFCE8 | #422006 |
lime |
Verde amarillento | #F7FEE7 | #1A2E05 |
green |
Verde | #F0FDF4 | #052E16 |
emerald |
Verde vívido | #ECFDF5 | #022C22 |
teal |
Verde-cian | #F0FDFA | #042F2E |
cyan |
Cian | #ECFEFF | #083344 |
sky |
Azul claro | #F0F9FF | #082F49 |
blue |
Azul | #EFF6FF | #172554 |
indigo |
Azul-violeta | #EEF2FF | #1E1B4B |
violet |
Violeta | #F5F3FF | #2E1065 |
purple |
Morado | #FAF5FF | #3B0764 |
fuchsia |
Rosa-morado | #FDF4FF | #4A044E |
pink |
Rosa | #FDF2F8 | #500724 |
rose |
Rojo-rosa | #FFF1F2 | #4C0519 |
Las familias de gris (slate, gray, zinc, neutral, stone) difieren principalmente en su subtono. slate tiene una tonalidad gris azulada, stone es más cálido y neutral es el más puramente acromático. Elegir la familia de gris adecuada para un proyecto importa más de lo que muchos desarrolladores se dan cuenta — los grises de slate se sienten diferentes a los grises de stone en una UI completa.
Convención de nombres de tonos: 50–950
El sistema de numeración sigue una regla consistente: los números más altos son más oscuros. La escala no es perfectamente lineal — el equipo de Tailwind ajustó los pasos a mano para la uniformidad perceptual en lugar de matemática — pero la relación es confiable:
| Tono | Uso principal |
|---|---|
| 50 | Fondos sutiles, estados hover, rayas en filas de tabla |
| 100 | Insignias claras, fondos de notificaciones, fondos de bloques de código |
| 200 | Bordes en modo claro, estados deshabilitados secundarios |
| 300 | Iconos y texto secundario sobre fondos blancos, bordes sutiles |
| 400 | Texto de marcador de posición, elementos decorativos |
| 500 | El tono "identidad" — la versión más reconocible del color |
| 600 | Fondos de botones primarios, valores predeterminados de elementos interactivos |
| 700 | Estado hover para elementos interactivos en 600 |
| 800 | Texto sobre blanco, rellenos de iconos oscuros |
| 900 | Texto de encabezados, texto de alto contraste, superficies en modo oscuro |
| 950 | Añadido en Tailwind v3.3 — casi negro con tinte de matiz, fondos profundos en modo oscuro |
El blue-500 predeterminado de Tailwind es #3B82F6 — un azul medio y completamente saturado que es el azul "canónico" de Tailwind. blue-600 (#2563EB) es el estado hover estándar para un botón azul. blue-100 (#DBEAFE) es el fondo para una insignia azul. Estas relaciones son consistentes en todas las familias de color de la paleta.
La adición del tono 950
Tailwind v3.3 añadió el tono 950 a cada familia de color. Antes de esa adición, el 900 era la opción más oscura, que en algunas familias de color era demasiado claro para fondos de modo oscuro. Los tonos 950 llenan ese vacío — son muy oscuros pero conservan un tinte visible del matiz padre. Por ejemplo, blue-950 (#172554) se lee como azul marino oscuro, no como negro puro, lo que lo hace útil para superficies en modo oscuro que mantienen el carácter de la marca.
Añadir colores personalizados
Para proyectos con colores de marca no cubiertos por la paleta predeterminada, la configuración de Tailwind permite añadir familias de colores personalizadas. El enfoque difiere entre Tailwind v3 y v4.
Tailwind v3: tailwind.config.js
En v3, los colores personalizados van en el objeto extend.colors para añadirlos junto a los predeterminados, o en el objeto colors para reemplazarlos:
// tailwind.config.js
const colors = require('tailwindcss/colors');
module.exports = {
theme: {
extend: {
colors: {
// Añadir una familia de color de marca personalizada
brand: {
50: '#f0f9ff',
100: '#e0f2fe',
200: '#bae6fd',
300: '#7dd3fc',
400: '#38bdf8',
500: '#0ea5e9', // Color primario de la marca
600: '#0284c7',
700: '#0369a1',
800: '#075985',
900: '#0c4a6e',
950: '#082f49',
},
// O referenciar una familia existente con un nuevo nombre
primary: colors.indigo,
danger: colors.red,
},
},
},
};
Tras esta configuración, puedes usar clases como bg-brand-500, text-brand-700, border-brand-200, entre otras.
Generación de una escala personalizada
La parte difícil de añadir un color personalizado es generar una escala completa de 11 tonos desde un único valor hex de marca. Hacerlo manualmente — ajustando la luminosidad manualmente para cada paso — produce resultados inconsistentes.
El Generador de tonos lo automatiza: ingresa el hex primario de tu marca y calcula la escala completa del 50 al 950 con pasos perceptualmente uniformes, produciendo valores que puedes pegar directamente en la configuración de Tailwind. Por ejemplo, si tu marca primaria es #0EA5E9 (un azul cielo), el generador produce una escala completa de 11 tonos calibrada para coincidir con la curva de luminosidad de las paletas nativas de Tailwind.
Uso de withOpacityValue para alfa dinámico
En Tailwind v3, las utilidades de color admiten opacidad arbitraria mediante la sintaxis de barra (bg-blue-500/50 para 50% de opacidad). Al definir colores personalizados en v3, puedes hacer que esto funcione usando propiedades personalizadas CSS con el patrón withOpacityValue:
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
brand: {
500: 'rgb(var(--color-brand-500) / <alpha-value>)',
},
},
},
},
};
Luego define los valores del canal en bruto en CSS:
:root {
--color-brand-500: 14 165 233; /* valores R G B de #0EA5E9 */
}
Esto permite que bg-brand-500/30 (30% de opacidad) funcione correctamente en el CSS generado.
Extensión de la paleta en la configuración
Más allá de las familias de color personalizadas, la configuración de Tailwind permite extender la paleta con alias semánticos y valores arbitrarios.
Alias semánticos
Un enfoque: define los colores de tu marca como alias semánticos que referencian la paleta:
// tailwind.config.js
const colors = require('tailwindcss/colors');
module.exports = {
theme: {
extend: {
colors: {
primary: colors.blue,
secondary: colors.violet,
success: colors.green,
warning: colors.amber,
danger: colors.red,
neutral: colors.slate,
},
},
},
};
Ahora bg-primary-500 genera el mismo CSS que bg-blue-500, pero los nombres de tus clases comunican propósito en lugar de color. Este patrón refleja el enfoque de nomenclatura semántica en los design tokens — la misma clase funciona incluso si más adelante decides que el color primario debería ser índigo en lugar de azul.
Colores semánticos de valor único
Para sistemas de diseño donde quieres colores con nombre sin la escala completa:
module.exports = {
theme: {
extend: {
colors: {
'brand-primary': '#0EA5E9',
'brand-secondary': '#7C3AED',
'text-on-primary': '#FFFFFF',
'surface-dark': '#0F172A',
},
},
},
};
Úsalos como bg-brand-primary, text-text-on-primary, y así sucesivamente.
Tailwind v4: el enfoque de variables CSS
Tailwind v4 introduce un modelo de configuración fundamentalmente diferente. En lugar de un archivo de configuración JavaScript, todo el sistema de diseño se define en CSS usando propiedades personalizadas y configuración basada en CSS.
La directiva @theme
Los colores en Tailwind v4 se definen usando la directiva @theme en tu archivo CSS:
@import "tailwindcss";
@theme {
/* Redefinir o extender la paleta predeterminada */
--color-brand-50: #f0f9ff;
--color-brand-100: #e0f2fe;
--color-brand-200: #bae6fd;
--color-brand-300: #7dd3fc;
--color-brand-400: #38bdf8;
--color-brand-500: #0ea5e9;
--color-brand-600: #0284c7;
--color-brand-700: #0369a1;
--color-brand-800: #075985;
--color-brand-900: #0c4a6e;
--color-brand-950: #082f49;
}
Tailwind v4 lee las propiedades personalizadas --color-* y genera automáticamente las clases de utilidad correspondientes: bg-brand-500, text-brand-700, border-brand-200, etc.
Colores semánticos en v4
El enfoque de v4 hace que los alias de color semánticos sean extremadamente limpios porque usa propiedades personalizadas CSS estándar:
@import "tailwindcss";
@theme {
--color-primary: var(--color-blue-600);
--color-primary-hover: var(--color-blue-700);
--color-primary-subtle: var(--color-blue-50);
--color-success: var(--color-green-600);
--color-danger: var(--color-red-600);
--color-warning: var(--color-amber-500);
}
Ahora bg-primary es una clase válida de Tailwind — y como referencia una propiedad personalizada CSS, puedes sobrescribirla en un bloque de modo oscuro o selector de tema sin tocar la configuración de Tailwind:
[data-theme="dark"] {
--color-primary: var(--color-blue-400);
}
Esta es la mejora más significativa en el sistema de color de v4: los temas son CSS puro, sin necesidad de paso de compilación para cambiar de tema.
Colores P3 y OKLCH en v4
La paleta predeterminada de Tailwind v4 usa valores OKLCH internamente para uniformidad perceptual. La paleta en v4 produce pasos visualmente más consistentes entre matices — especialmente notable en colores cálidos como naranja y amarillo, donde las paletas anteriores tenían pasos de luminosidad desiguales.
Al usar el Conversor de color para generar valores OKLCH de los colores de tu marca, puedes incorporarlos directamente al bloque @theme:
@theme {
/* Color de marca definido en OKLCH para soporte de display P3 de gama amplia */
--color-brand-500: oklch(60% 0.18 220);
}
Los navegadores modernos en displays de gama amplia (la mayoría de MacBooks e iPhones) renderizarán esto en el espacio de color P3 — produciendo un azul notablemente más vívido que el equivalente limitado a sRGB.
Consejos prácticos para la selección de colores
Combinación efectiva de familias
Las familias de gris de Tailwind fueron diseñadas para complementar colores de acento específicos. Algunas combinaciones habituales:
- slate + blue/indigo — frío, corporativo, ligeramente tecnológico
- stone + amber/orange — cálido, artesanal, humano
- zinc + violet/purple — neutro, moderno, ligeramente oscuro
- neutral + cualquier color — el gris más versátil, funciona con todo
Mezclar grises de diferentes familias en la misma UI (por ejemplo, slate-100 para un fondo y zinc-200 para otro) produce una inconsistencia visual sutil. Comprométete con una familia de gris por proyecto.
La regla de texto 100/700 sobre fondo
Una combinación confiable con contraste seguro en Tailwind: usa texto de tono 700 sobre un fondo de tono 100 dentro de la misma familia. Por ejemplo, text-blue-700 sobre bg-blue-100 produce una insignia azul legible que cumple WCAG AA. Usa el Verificador de contraste para verificar cualquier combinación no estándar.
Mapeo de tonos para el modo oscuro
Un patrón habitual para el modo oscuro en Tailwind es invertir la escala de tonos — lo que era 700 en modo claro se convierte en 300 en modo oscuro:
<p class="text-gray-700 dark:text-gray-300">
Texto de cuerpo — gris oscuro en modo claro, gris claro en modo oscuro
</p>
<div class="bg-gray-100 dark:bg-gray-800">
Fondo sutil — apenas gris en modo claro, superficie oscura en modo oscuro
</div>
Esta simetría funciona porque la escala de Tailwind está diseñada de modo que 100+900=1000 y 200+800=1000 — los pares de tonos son imágenes especulares en términos de luminosidad percibida.
Conclusiones clave
- Las 22 familias de color de Tailwind abarcan cada una 11 tonos del 50 (casi blanco) al 950 (casi negro), con el 500 como tono "identidad" canónico y el 600 como estado interactivo predeterminado.
- Elige una familia de gris (slate, gray, zinc, neutral o stone) por proyecto y úsala de manera consistente — mezclar familias de gris crea inconsistencia visual sutil.
- Las familias de color personalizadas se añaden mediante
extend.colorsen Tailwind v3 o@themeen v4. El Generador de tonos genera una escala completa del 50 al 950 desde cualquier valor hex de marca. - En Tailwind v4, los colores son propiedades personalizadas CSS bajo
@theme, lo que permite temas en CSS puro sin recompilación — anula las variables de color semánticas en un bloque[data-theme="dark"]. - Los alias semánticos (
primary: colors.blue) hacen que los nombres de clase comuniquen propósito en lugar de apariencia, sin necesidad de refactorización de nombres de clase ante futuros cambios de color de marca. - El Conversor de color proporciona equivalentes OKLCH para cualquier color hex — útil para definiciones de color de gama amplia en v4 que aprovechan los displays P3.