Utility classes

<< Introducción Tema y colores >>

Tailwind CSS ha transformado el desarrollo web al proponer un cambio de mentalidad: pasar de la creación de componentes semánticos a un diseño basado íntegramente en utilidades. Para un desarrollador experto en CSS, esto puede parecer contraintuitivo al principio, ya que rompe la regla de "separación de conceptos". Sin embargo, su verdadera potencia reside en eliminar la fricción que supone inventar nombres de clases y saltar constantemente entre archivos, permitiendo que el diseño ocurra allí donde vive la estructura.

En lugar de encapsular múltiples propiedades bajo un selector único, Tailwind ofrece un catálogo de clases atómicas que mapean directamente a propiedades CSS individuales. Al usar estas clases, construyes tus componentes mediante la composición, garantizando una consistencia visual absoluta gracias a un sistema de diseño predefinido que evita el crecimiento desmedido de tus archivos de estilos globales.

Por ejemplo, imaginemos que tenemos un botón con la clase .btn-blue en nuestro HTML y le asignamos las siguientes propiedades CSS:

.btn-blue {
  background-color: #3b82f6;
  padding: 8px 16px;
  border-radius: 4px;
  color: white;
}

Con Tailwind, podemos sustituir estas propiedades por estas clases equivalentes:

<button class="bg-blue-500 px-4 py-2 rounded text-white">
  Click aquí
</button>

Ventajas que aporta este enfoque, sobre todo si ya tenemos conocimientos de CSS:

  • Se acabó "inventar" nombres: Ya no tienes que debatir si algo es un .wrapper, .container o .main-content-inner.
  • CSS que no crece: En un proyecto tradicional, el archivo CSS aumenta con cada página nueva. Con Tailwind, el tamaño del CSS se estanca porque reutilizas las mismas clases básicas una y otra vez.
  • Restricciones de diseño: En lugar de usar cualquier valor (como padding: 13px), usas la escala del framework (p-3 o p-4), lo que garantiza consistencia visual sin esfuerzo.
  • Responsividad instantánea: Tailwind usa modificadores. Si quieres que el botón sea rojo solo en pantallas grandes, simplemente añades lg:bg-red-500.
  • Cercano a CSS: Tailwind no reemplaza tu conocimiento de CSS; de hecho, necesitas saber CSS para usarlo bien. Si no sabes qué hace flex-direction, la clase flex-col no te servirá de nada.

Aquí tenemos un ejemplo más complejo con media queries (cambio de orientación flex en pantallas a partir de un tamaño mediano) para crear una card. Este sería el CSS que podríamos tener:

/* style.css */
.card {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 1.5rem;
  background-color: #ffffff;
  border-radius: 0.75rem;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
  transition: all 0.2s;
}
.card:hover { transform: scale(1.05); }

.card-img {
  width: 5rem; height: 5rem;
  border-radius: 9999px;
  object-fit: cover;
}

.card-info {
  margin-top: 1rem;
  text-align: center;
}

.card-name {
  font-size: 1.125rem;
  font-weight: 700;
  color: #1a202c;
}

.card-job { color: #718096; }

/* Media Query para hacerlo horizontal en escritorio */
@media (min-width: 768px) {
  .card { flex-direction: row; }
  .card-info { margin-top: 0; margin-left: 1.5rem; text-align: left; }
}

Este sería el equivalente usando clases de Tailwind:

<div class="flex flex-col md:flex-row items-center p-6 bg-white rounded-xl shadow-md transition transform hover:scale-105">
  <img class="w-20 h-20 rounded-full" src="avatar.jpg" alt="Perfil">
  <div class="mt-4 md:mt-0 md:ml-6 text-center md:text-left">
    <h2 class="text-lg font-bold">Alex Doe</h2>
    <p class="text-gray-500">Fullstack Developer</p>
  </div>
</div>

<< Introducción Tema y colores >>