Como crear box-shadow en CSS: guia completa con generador visual gratis
Aprende la sintaxis de box-shadow en CSS, tipos de sombras, trucos avanzados y un generador visual online para copiar codigo listo.
La sintaxis de box-shadow en CSS
La propiedad box-shadow agrega sombras a elementos HTML. Sintaxis completa:
box-shadow: [inset] offset-x offset-y blur-radius spread-radius color;
Parametros:
- offset-x: Desplazamiento horizontal. Positivo = derecha, negativo = izquierda.
- offset-y: Desplazamiento vertical. Positivo = abajo, negativo = arriba.
- blur-radius: Cuanto se difumina la sombra. 0 = bordes nitidos.
- spread-radius: Cuanto se expande o contrae la sombra. Positivo = mas grande, negativo = mas pequena.
- color: Color de la sombra. Usa rgba() para transparencia.
- inset: Opcional. Hace la sombra interior en vez de exterior.
Crea sombras visualmente con el generador de box-shadow de NexTools.
Como usar el generador de box-shadow de NexTools
El generador visual de NexTools:
Paso 1: Ajusta los sliders de offset-x, offset-y, blur y spread.
Paso 2: Selecciona el color de la sombra con transparencia.
Paso 3: Ve el resultado en tiempo real en la previsualizacion.
Paso 4: Copia el codigo CSS generado con un clic.
Puedes agregar multiples sombras para efectos avanzados. Complementa con el generador de gradientes para fondos.
Ejemplos de box-shadow populares listos para usar
Sombra sutil (material design):
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
Sombra media (cards):
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1);
Sombra fuerte (elevacion alta):
box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1);
Sombra neon/glow:
box-shadow: 0 0 20px rgba(99,102,241,0.5);
Sombra interior (inset):
box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
Borde sombra (sin blur):
box-shadow: 0 0 0 3px rgba(99,102,241,0.5);
Sombras multiples y efectos avanzados
CSS permite multiples sombras separadas por comas:
box-shadow:
0 1px 3px rgba(0,0,0,0.12),
0 1px 2px rgba(0,0,0,0.24);
Efecto de elevacion Material Design: Google define 5 niveles de elevacion, cada uno con 2-3 sombras superpuestas para un resultado realista.
Efecto neumorfismo:
box-shadow:
8px 8px 16px #d9d9d9,
-8px -8px 16px #ffffff;
Requiere fondo gris claro (#e0e0e0) para funcionar correctamente.
Combina sombras con colores del conversor de colores de NexTools.
box-shadow vs drop-shadow vs text-shadow
box-shadow: Sombra rectangular alrededor del box model del elemento. No sigue la forma del contenido (un elemento circular con box-shadow tiene sombra rectangular si no tiene border-radius).
filter: drop-shadow(): Sigue la forma real del elemento, incluyendo transparencia de PNG. Ideal para iconos y formas irregulares. filter: drop-shadow(0 4px 6px rgba(0,0,0,0.1));
text-shadow: Solo para texto. text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
Cuando usar cada una:
- Cards, botones, contenedores →
box-shadow - Iconos PNG con transparencia →
drop-shadow - Texto con efecto visual →
text-shadow
Rendimiento: cuando las sombras afectan la velocidad
Las sombras CSS son renderizadas por la GPU pero pueden afectar el rendimiento:
Sombras costosas:
- Blur muy alto (50px+) en muchos elementos simultaneos
- Sombras animadas (cambiar box-shadow causa repaint)
- Muchos elementos con sombras en scroll (lista de 100+ cards)
Optimizaciones:
- Anima
transformen vez debox-shadowpara hover: mueve un pseudo-elemento con sombra usando translateY - Usa
will-change: transformpara elementos que se animan - Para listas largas, aplica sombras solo a elementos visibles (Intersection Observer)
Sombras en dark mode
Las sombras clasicas (negro sobre blanco) no funcionan en dark mode:
Problema: rgba(0,0,0,0.1) sobre fondo oscuro es invisible.
Solucion 1: Sombras mas oscuras. Usa rgba(0,0,0,0.3-0.5) en dark mode.
Solucion 2: Sombras de color. Usa el color del elemento atenuado: rgba(99,102,241,0.3).
Solucion 3: Bordes sutiles. En dark mode, a menudo un borde de 1px funciona mejor que sombras: border: 1px solid rgba(255,255,255,0.1);
Variables CSS para ambos modos:
:root { --shadow: 0 4px 6px rgba(0,0,0,0.1); }
.dark { --shadow: 0 4px 6px rgba(0,0,0,0.4); }
Box-shadow en Tailwind CSS
Tailwind incluye utilidades de sombra predefinidas:
shadow-sm→ 0 1px 2px rgba(0,0,0,0.05)shadow→ 0 1px 3px rgba(0,0,0,0.1)shadow-md→ 0 4px 6px rgba(0,0,0,0.1)shadow-lg→ 0 10px 15px rgba(0,0,0,0.1)shadow-xl→ 0 20px 25px rgba(0,0,0,0.1)shadow-2xl→ 0 25px 50px rgba(0,0,0,0.25)shadow-inner→ inset 0 2px 4px rgba(0,0,0,0.05)shadow-none→ ninguna sombra
Para sombras personalizadas en Tailwind: shadow-[0_4px_20px_rgba(0,0,0,0.15)] (arbitrary values).
Consulta tambien nuestra guia sobre gradientes CSS.
Prueba esta herramienta:
Abrir herramienta→Preguntas frecuentes
Puedo animar box-shadow con CSS
Si, pero no es recomendable para rendimiento. Animar box-shadow causa repaints costosos. Mejor: usa un pseudo-elemento (::after) con la sombra final y anima su opacidad con transition. O anima transform: translateY() para simular cambio de elevacion.
Que diferencia hay entre box-shadow y drop-shadow
box-shadow es rectangular (sigue el box model). drop-shadow (filter) sigue la forma real del elemento incluyendo transparencia. Para iconos PNG o formas irregulares, usa drop-shadow. Para cards y contenedores, usa box-shadow.
Puedo agregar varias sombras a un mismo elemento
Si. Separa con comas: box-shadow: 0 2px 4px rgba(0,0,0,0.1), 0 8px 16px rgba(0,0,0,0.1); El orden importa: la primera sombra se renderiza encima de la segunda.
Como hago una sombra interior (inset)
Agrega la palabra clave 'inset' al inicio: box-shadow: inset 0 2px 4px rgba(0,0,0,0.2); La sombra aparece dentro del elemento en vez de fuera. Util para campos de formulario activos o botones presionados.
Las sombras CSS afectan el rendimiento de la pagina
Minimamente para uso normal. Sombras con blur muy alto (50px+) en muchos elementos o sombras animadas pueden causar jank. Optimiza animando transform en vez de box-shadow y usa will-change cuando sea necesario.
Como hago que las sombras funcionen en dark mode
Las sombras negras sobre fondo oscuro son invisibles. Opciones: aumentar la opacidad (0.3-0.5), usar sombras de color, o reemplazar con bordes sutiles (1px solid rgba(255,255,255,0.1)). Usa CSS variables para cambiar entre modos.