TailwindCSS: Evaluación

Ponte a prueba con nuestra evaluación de TailwindCSS. Descubre qué tan bien conoces este framework y mejora tus habilidades con nuestras preguntas y ejercicios prácticos.

Aprende TailwindCSS GRATIS y certifícate

Tailwind CSS es un framework CSS de utilidad que permite crear diseños personalizados sin salir de tu HTML. A diferencia de otros frameworks como Bootstrap, Tailwind no proporciona componentes prediseñados, sino clases de utilidad que puedes combinar para crear cualquier diseño.

Este enfoque utility-first te permite construir diseños complejos mediante la aplicación de clases predefinidas directamente en tus elementos HTML, evitando la necesidad de escribir CSS personalizado.

Fundamentos de Tailwind CSS

Instalación y configuración

Existen varias formas de instalar Tailwind en tu proyecto. La más común es mediante npm:

npm install -D tailwindcss
npx tailwindcss init

Tras la instalación, debes crear un archivo de configuración tailwind.config.js:

module.exports = {
  content: ["./src/**/*.{html,js}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

Finalmente, importa Tailwind en tu archivo CSS principal:

@tailwind base;
@tailwind components;
@tailwind utilities;

Sistema de diseño responsive

Tailwind utiliza un enfoque mobile-first para el diseño responsive. Los prefijos de breakpoint te permiten aplicar estilos condicionalmente según el tamaño de la pantalla:

<div class="w-full md:w-1/2 lg:w-1/3">
  <!-- Este div ocupará el 100% del ancho en móviles, 50% en tablets y 33.33% en escritorio -->
</div>

Los breakpoints principales son:

  • sm: 640px
  • md: 768px
  • lg: 1024px
  • xl: 1280px
  • 2xl: 1536px

Utilidades principales

Diseño y espaciado

Tailwind ofrece clases para controlar el modelo de caja y el espaciado:

<div class="m-4 p-6">
  <!-- Margen de 1rem (16px) y padding de 1.5rem (24px) -->
</div>

<div class="mx-auto my-4">
  <!-- Centrado horizontal con margen automático y margen vertical de 1rem -->
</div>

<div class="space-y-4">
  <!-- Añade 1rem de espacio entre los elementos hijos -->
</div>

Tipografía

Las clases de tipografía te permiten controlar todos los aspectos del texto:

<p class="text-lg font-bold text-blue-600">
  <!-- Texto grande, en negrita y de color azul -->
</p>

<h1 class="text-2xl md:text-4xl font-semibold tracking-tight">
  <!-- Título responsive con tracking ajustado -->
</h1>

Colores

Tailwind incluye una paleta de colores completa con diferentes tonalidades:

<button class="bg-blue-500 hover:bg-blue-700 text-white">
  <!-- Botón azul que se oscurece al pasar el ratón -->
</button>

<div class="text-gray-700 bg-gray-100 border border-gray-300">
  <!-- Elemento con texto gris oscuro, fondo gris claro y borde gris medio -->
</div>

Flexbox y Grid

Las utilidades de Flexbox son fundamentales en Tailwind:

<div class="flex justify-between items-center">
  <!-- Contenedor flex con elementos alineados y espaciados -->
  <div>Elemento 1</div>
  <div>Elemento 2</div>
</div>

Las utilidades de Grid permiten crear layouts complejos:

<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  <!-- Grid responsive de 1, 2 o 3 columnas según el tamaño de pantalla -->
  <div>Elemento 1</div>
  <div>Elemento 2</div>
  <div>Elemento 3</div>
</div>

Customización

Personalización del tema

Puedes extender o sobrescribir los valores predeterminados de Tailwind en el archivo de configuración:

module.exports = {
  theme: {
    extend: {
      colors: {
        'brand': '#ff6b6b',
        'brand-dark': '#d63031',
      },
      spacing: {
        '72': '18rem',
        '84': '21rem',
      }
    }
  }
}

Plugins

Los plugins permiten añadir nuevas funcionalidades:

// tailwind.config.js
const plugin = require('tailwindcss/plugin')

module.exports = {
  plugins: [
    plugin(function({ addUtilities }) {
      const newUtilities = {
        '.text-shadow': {
          textShadow: '0 2px 4px rgba(0,0,0,0.1)'
        }
      }
      addUtilities(newUtilities)
    })
  ]
}

Características avanzadas

Estado y variantes

Tailwind ofrece variantes para aplicar estilos basados en estados:

<button class="bg-blue-500 hover:bg-blue-700 focus:ring-2 focus:ring-blue-300 active:bg-blue-800">
  <!-- Diferentes estilos según el estado del botón -->
</button>

<input class="border-gray-300 focus:border-blue-500 focus:ring-1 focus:ring-blue-500">
  <!-- Input con borde que cambia al enfocarse -->
</input>

Dark Mode

El modo oscuro puede implementarse fácilmente:

<div class="bg-white dark:bg-gray-800 text-gray-900 dark:text-white">
  <!-- Cambia automáticamente entre modo claro y oscuro -->
</div>

Para habilitarlo, configura la opción darkMode en tu configuración:

// tailwind.config.js
module.exports = {
  darkMode: 'media', // o 'class' para activación manual
  // resto de la configuración
}

Funciones @apply

La directiva @apply permite extraer patrones comunes a tus propias clases CSS:

@layer components {
  .btn-primary {
    @apply py-2 px-4 bg-blue-500 text-white font-semibold rounded-lg shadow-md hover:bg-blue-700;
  }
}

Optimización

Purge CSS

Tailwind incluye PurgeCSS integrado para eliminar clases no utilizadas en producción:

// tailwind.config.js
module.exports = {
  content: [
    './src/**/*.html',
    './src/**/*.js',
    './src/**/*.jsx',
  ],
  // resto de la configuración
}

Este sistema reduce drásticamente el tamaño del archivo CSS final, mejorando el rendimiento de tu sitio.

Conceptos importantes

Sistema de espaciado

Tailwind utiliza una escala de espaciado consistente para márgenes, padding y otros valores:

  • 0: 0px
  • 0.5: 0.125rem (2px)
  • 1: 0.25rem (4px)
  • 2: 0.5rem (8px)
  • 4: 1rem (16px)
  • 6: 1.5rem (24px)
  • 8: 2rem (32px)

Arquitectura CSS

Tailwind promueve un enfoque utility-first, pero también permite organizar el código usando:

  1. @layer base - para estilos base y reset
  2. @layer components - para componentes reutilizables
  3. @layer utilities - para utilidades personalizadas
@layer base {
  h1 {
    @apply text-2xl font-bold;
  }
}

@layer components {
  .card {
    @apply p-6 rounded-lg shadow-lg;
  }
}

@layer utilities {
  .text-shadow-sm {
    text-shadow: 0 1px 2px rgba(0,0,0,0.1);
  }
}

JIT (Just-In-Time) Compiler

Desde Tailwind CSS v3.0, el compilador JIT está habilitado por defecto. Esto ofrece:

  • Tiempos de compilación más rápidos
  • Generación de clases bajo demanda
  • Soporte para valores arbitrarios
<div class="w-[762px] h-[375px] bg-[#1da1f2]">
  <!-- Usando valores arbitrarios con corchetes -->
</div>

Ejemplos prácticos

Tarjeta de producto

<div class="max-w-sm rounded overflow-hidden shadow-lg">
  <img class="w-full" src="product.jpg" alt="Producto">
  <div class="px-6 py-4">
    <div class="font-bold text-xl mb-2">Nombre del producto</div>
    <p class="text-gray-700 text-base">
      Descripción del producto con todos los detalles importantes.
    </p>
  </div>
  <div class="px-6 pt-4 pb-2">
    <span class="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2">#etiqueta1</span>
    <span class="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2">#etiqueta2</span>
  </div>
</div>

Barra de navegación responsive

<nav class="bg-white shadow">
  <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
    <div class="flex justify-between h-16">
      <div class="flex">
        <div class="flex-shrink-0 flex items-center">
          <img class="h-8 w-auto" src="logo.svg" alt="Logo">
        </div>
        <div class="hidden sm:ml-6 sm:flex sm:space-x-8">
          <a href="#" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">
            Inicio
          </a>
          <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">
            Productos
          </a>
          <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">
            Servicios
          </a>
          <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">
            Contacto
          </a>
        </div>
      </div>
      <div class="sm:hidden">
        <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500">
          <svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
          </svg>
        </button>
      </div>
    </div>
  </div>
</nav>

Formulario estilizado

<form class="space-y-6 max-w-md mx-auto">
  <div>
    <label for="email" class="block text-sm font-medium text-gray-700">
      Correo electrónico
    </label>
    <div class="mt-1">
      <input id="email" name="email" type="email" required 
             class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
    </div>
  </div>

  <div>
    <label for="password" class="block text-sm font-medium text-gray-700">
      Contraseña
    </label>
    <div class="mt-1">
      <input id="password" name="password" type="password" required 
             class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm
Empezar curso de TailwindCSS

Lecciones de este módulo de TailwindCSS

Lecciones de programación del módulo Evaluación del curso de TailwindCSS.

Ejercicios de programación en este módulo de TailwindCSS

Evalúa tus conocimientos en Evaluación con ejercicios de programación Evaluación de tipo Test, Puzzle, Código y Proyecto con VSCode.