Sombras de Tailwind CSS
En el diseño web moderno, los efectos de sombra son una herramienta importante para crear jerarquía visual y sensación de profundidad.
Tailwind CSS ofrece un conjunto de clases de utilidad de sombras potente y flexible que permite implementar fácilmente diversos efectos de sombra.
Este artículo presenta de forma integral el sistema de sombras de Tailwind CSS, incluyendo box-shadow (sombra de caja), text-shadow (sombra de texto), el control del color y la opacidad de las sombras, así como la aplicación de efectos de sombra interior.
¿Qué son las sombras CSS?
Antes de profundizar en la implementación específica de Tailwind, primero comprendamos los conceptos básicos de las sombras CSS.
Las sombras CSS se dividen principalmente en dos tipos:
- Sombra de caja (box-shadow): se aplica a todo el modelo de caja del elemento
- Sombra de texto (text-shadow): se aplica solo al contenido de texto del elemento
Los efectos de sombra pueden:
- Mejorar la jerarquía visual de los elementos
- Crear efectos de "flotación"
- Simular iluminación y profundidad
- Resaltar contenido importante
box-shadow en Tailwind
Tailwind proporciona una serie de clases de utilidad de box-shadow predefinidas, divididas en 6 niveles, desde sutiles hasta intensos:
Ejemplo
<div class="shadow">Sombra predeterminada</div>
<div class="shadow-md">Sombra mediana</div>
<div class="shadow-lg">Sombra grande</div>
<div class="shadow-xl">Sombra extra grande</div>
<div class="shadow-2xl">Sombra extra extra grande</div>
Pruébalo »
Tabla comparativa de niveles de sombra
| Nombre de clase | Descripción | Caso de uso |
|---|---|---|
| shadow-sm | Sombra muy sutil | Hover de botones, elevación ligera |
| shadow | Sombra predeterminada (tamaño mediano) | Tarjetas, elementos comunes |
| shadow-md | Sombra mediana | Modales, notificaciones importantes |
| shadow-lg | Sombra grande | Paneles flotantes, elementos destacados |
| shadow-xl | Sombra extra grande | Elementos con énfasis especial |
| shadow-2xl | Sombra extra extra grande | Elementos que necesitan destacarse muy claramente |
Ejemplos de código y práctica
Ejemplo
<div class="text-xl font-medium text-black">Ejemplo de sombras en Tailwind</div>
<p class="text-gray-500">Este es un ejemplo de tarjeta que usa shadow-md</p>
</div>
Pruébalo »
Explicación del efecto:
- Se creó una tarjeta con fondo blanco
- Se usó
shadow-mdla clase para agregar sombra mediana - Combinado con bordes redondeados (
rounded-xl) para que el efecto de sombra sea más natural
text-shadow en Tailwind
Tailwind no incluye clases de utilidad de text-shadow de forma predeterminada, pero se pueden agregar de las siguientes maneras:
Método 1: Usar un plugin
Instalartailwindcss-textshadowplugin:
Ejemplo
Luego, entailwind.config.jsconfigura:
Ejemplo
plugins: [
require('tailwindcss-textshadow')
],
theme: {
textShadow: {
'sm': '1px 1px 2px rgba(0, 0, 0, 0.5)',
'DEFAULT': '2px 2px 4px rgba(0, 0, 0, 0.5)',
'lg': '4px 4px 8px rgba(0, 0, 0, 0.5)',
}
}
}
Ejemplo de uso:
Ejemplo
Método 2: Clases de utilidad personalizadas
Agrega en CSS:
Ejemplo
.text-shadow {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
}
.text-shadow-sm {
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
}
}
Control de color y opacidad de sombras
Tailwind te permite controlar el color y la opacidad de las sombras mediante combinaciones de clases de utilidad.
1. Usar clases de utilidad de color de sombra
Ejemplo
Análisis de sintaxis:
shadow-{color}: establece el color de la sombra (por ejemplo, blue-500)/{opacity}: establece la opacidad de la sombra (por ejemplo, 50 indica 50%)
2. Colores y opacidades disponibles
Tailwind admite todos los colores integrados y cualquier valor de opacidad:
Ejemplo
<div class="shadow-lg shadow-emerald-300/80">Sombra intensa verde esmeralda</div>
<div class="shadow-lg shadow-purple-600/20">Sombra púrpura suave</div>
3. Personalizar el color de las sombras
Entailwind.config.jsextiende en:
Ejemplo
theme: {
extend: {
boxShadow: {
'custom': '0 4px 6px -1px rgba(156, 39, 176, 0.3)',
}
}
}
}
Efecto de sombra interior (inset)
La sombra interior puede crear un efecto de hundimiento o presión, y se usa comúnmente en elementos interactivos como botones y campos de entrada.
1. Usar clases de sombra interior predefinidas
Ejemplo
2. Personalizar sombras interiores
Agrega en el archivo de configuración:
Ejemplo
theme: {
extend: {
boxShadow: {
'inner-lg': 'inset 0 4px 6px 0 rgba(0, 0, 0, 0.1)',
}
}
}
}
3. Ejemplo de aplicación práctica
Ejemplo
Botón de clic
</button>
Explicación del efecto:
- El estado predeterminado tiene una sombra interior ligera
- Al pasar el cursor, la sombra interior se intensifica (
hover:shadow-inner-lg) - se crea el efecto visual de que el botón se presiona
Técnicas avanzadas y mejores prácticas
1. Combinar sombras exteriores e interiores
Ejemplo
2. Sombras responsivas
Ejemplo
3. Estados de hover y foco
Ejemplo
Botón interactivo
</button>
4. Animaciones de sombra
Ejemplo
Botón con efecto de transición
</button>
Desafíos de práctica
- Crea un componente de tarjeta que tenga una sombra mediana por defecto y que al pasar el cursor la sombra se haga más grande y cambie de color
- Diseña un campo de entrada con sombra interior que desaparezca al recibir el foco
- Implementa un título de texto que utilice text-shadow para crear un efecto de neón
- Combina sombras exteriores e interiores para crear un botón con efecto tridimensional
Resumen de puntos clave
Tabla de referencia rápida de clases de utilidad principales
| Función | Ejemplo de clase | Descripción |
|---|---|---|
| Sombra de caja | shadow, shadow-lg | Sombras exteriores de diferentes tamaños |
| Sombra interior | shadow-inner | Sombra dentro del elemento |
| Color de sombra | shadow-blue-500 | Establece el color de la sombra |
| Opacidad de sombra | shadow-blue-500/50 | Establece la opacidad de la sombra |
| Sombra de texto | text-shadow (requiere personalización) | Agrega sombra al texto |
Recomendaciones de mejores prácticas
- Uso moderado: las sombras deben realzar el diseño, no distraer la atención
- Mantén la consistencia: mantén niveles de sombra similares en todo el proyecto
- Considera el rendimiento: demasiadas sombras complejas pueden afectar el rendimiento de renderizado
- Combina con otras propiedades: las sombras funcionan mejor cuando se combinan con bordes redondeados y efectos de transición