Generador de Box Shadow

Generador de Sombras CSS & Box Shadow

Genera sombras CSS multicapa y elevaciones suaves fotorrealistas. Personaliza desplazamiento, desenfoque, propagación y resplandor interior, y exporta código CSS limpio o tokens de Tailwind.

Ajuste rápido

Distribución armónica de elevación

Ángulo incidente de la luz (90°)
Dirección de la luz (Brújula)
Número de capas:
Distancia de elevación50px
Desenfoque máximo80px
Propagación-5px
Opacidad25%
Proporción de sombra de contacto60%
Tinte cromático ambientalNeutral
Borde subpíxel
Curva de interpolaciónCúbica
Elemento de prueba:
Fondo del lienzo:
DestacadoSample card version

Plan Profesional

Previsualiza cómo responde la sombra en tiempo real sobre tarjetas, modales y botones interactivos.

29 €/mes
Capas activas
6 / Max layers count
Capas calculadas en memoria
Desenfoque acumulado
180px
Radio máximo de difusión
Rendimiento de rasterizado
60 FPS Aceleración GPU óptima
Impacto en composición GPU
Referencia técnica y guía de arquitectura

Generador de Sombras CSS & Box Shadow — Guía de referencia

Genera sombras CSS multicapa y elevaciones realistas y suaves. Personaliza desplazamiento, desenfoque, expansión, resplandor interior (inset) y exporta tokens CSS limpios o clases para Tailwind CSS.

Generador de Sombras CSS & Box Shadow — Guía de referencia — Arquitectura en memoria del lado del cliente y flujo de datos
Generador de Sombras CSS & Box Shadow — Guía de referencia — Arquitectura en memoria del lado del cliente y flujo de datos

Parámetros clave y controles

offset-x (Desplazamiento horizontal)Longitud (px)

Especifica el desplazamiento cartesiano horizontal de la sombra respecto a la caja del elemento. Los valores positivos proyectan la sombra hacia la derecha; los valores negativos la proyectan hacia la izquierda. En modelos de iluminación multicapa, offset-x se deriva como dx = distance * cos(theta), donde theta representa el ángulo de incidencia de la fuente de luz.

Por defecto: 0px
offset-y (Desplazamiento vertical)Longitud (px)

Define el desplazamiento cartesiano vertical de la sombra. Los valores positivos proyectan la sombra hacia abajo (simulando la iluminación cenital natural del sol o luminarias de techo); los valores negativos la proyectan hacia arriba. Los modelos estándar de elevación física escalan offset-y proporcionalmente con la elevación percibida en el eje Z.

Por defecto: 4px
blur-radius (Dispersión gaussiana)Longitud (px)

Define la desviación estándar para el núcleo de desenfoque gaussiano aplicado al perímetro de la sombra (sigma = blur / 2). Un radio de desenfoque de 0 genera una silueta dura y nítida; valores superiores a 0 producen un degradado difuso de penumbra. Valores mayores a 64px pueden ocasionar cuellos de botella en la rasterización por GPU en dispositivos móviles de recursos limitados.

Por defecto: 12px
spread-radius (Expansión y contracción perimetral)Longitud (px)

Expande o contrae la geometría de la sombra en las cuatro direcciones antes de la rasterización gaussiana. Los valores positivos expanden el perímetro hacia afuera; los valores negativos lo contraen hacia el interior, una técnica clave en sombras multicapa para prevenir el desbordamiento lateral sin perder anclaje vertical.

Por defecto: -2px
color & alpha (Absorción cromática y opacidad)Color (HEX / RGBA / OKLCH)

Especifica el color espectral y la opacidad de la sombra proyectada. El negro puro (rgba(0, 0, 0, alpha)) representa una absorción no calibrada que genera halos grisáceos turbios sobre fondos de color. Los design tokens profesionales emplean matices tintados (p. ej., azul marino profundo para superficies frías o sombra tostada para superficies cálidas) calibrados entre el 4% y el 25% de canal alfa.

Por defecto: rgba(0, 0, 0, 0.08)
inset (Sombra interna o hendidura)Bandera de palabra clave (Keyword Flag)

Al declararse, invierte el vector de proyección para renderizar la sombra dentro del border-box del elemento en lugar de proyectarla externamente. Las sombras inset simulan hendiduras, bajorrelieves, biseles interiores cóncavos y estados de botones presionados, recortándose con precisión según la curvatura de border-radius.

Por defecto: false (exterior)
harmonic falloff curve (Atenuación armónica entre capas)Exponente matemático (k)

Exponente polinómico o exponencial de ley de potencias (habitualmente k = 1.8 a 2.4) que modula cómo escalan el desplazamiento, el desenfoque gaussiano y la opacidad alfa a través de capas sucesivas en una sombra multicapa. Evita saltos lineales artificiales y emula la disipación óptica real de la ley del inverso del cuadrado de la distancia.

Por defecto: 2.0 (cuadrática)

Consejos profesionales y mejores prácticas

El radio de expansión negativo evita el desbordamiento lateral en tarjetas

Al aplicar sombras verticales pronunciadas (p. ej., offset-y: 20px, blur: 25px), el desenfoque gaussiano se desborda automáticamente hacia los lados, creando un aspecto abultado y poco natural. Al introducir un spread-radius negativo equivalente al 20%-40% del desplazamiento vertical (p. ej., spread: -6px), contraes los laterales hacia adentro mientras preservas un fuerte anclaje inferior, logrando una elevación vertical limpia y nítida.

Anima la opacidad de un pseudoelemento en lugar de box-shadow para lograr 60 fps estables

Hacer transiciones o animar directamente la propiedad box-shadow obliga al motor del navegador a rerasterizar matrices pesadas de desenfoque gaussiano en CPU y GPU en cada frame, provocando caídas de cuadros y tirones (jank) al hacer hover. En su lugar, declara la sombra elevada en un pseudoelemento ::after con opacity: 0 y will-change: opacity, y anima únicamente opacity: 1 junto a transform: translateY(-2px) acelerado por hardware para obtener transiciones a 60 fps/120 fps fluidas en el hilo del compositor de la GPU.

Evita bordes grises apagados tintando el tono de la sombra con el fondo

Aplicar sombras negras neutras (rgba(0, 0, 0, 0.15)) sobre superficies cromáticas (como ámbar cálido, verde esmeralda o zafiro) genera halos grises ópticamente sucios y desaturados debido al mezclado gamma en sRGB. Para conseguir una profundidad pulida y vibrante, deriva el matiz de la sombra rotando el tono del fondo entre 10° y 20° hacia un color frío complementario, aumentando la saturación un 15% y reduciendo la luminosidad al 8%-15%.

Problemas comunes y soluciones

⚠️La sombra de caja se corta o no se visualiza alrededor del perímetro de la tarjeta

Si un contenedor ancestro tiene declarado overflow: hidden u overflow: auto, cualquier box-shadow que sobrepase los límites de la caja quedará recortada de inmediato. Soluciónalo añadiendo padding suficiente al contenedor padre (al menos equivalente a blur + offset-y), retirando overflow: hidden o asignando la sombra a un div contenedor independiente situado fuera del contenedor con scroll.

⚠️Las sombras multicapa provocan tirones y un alto consumo de memoria GPU al hacer scroll

Superponer más de 6 capas de sombra complejas con radios de desenfoque superiores a 60px satura la memoria de teselas de la GPU, especialmente en pantallas Retina de alta densidad (HiDPI). Optimízalo reduciendo el número de capas a 3 o 4 capas armónicas calibradas, limitando el desenfoque máximo a 40px y añadiendo contain: paint o will-change: transform para aislar la tarjeta en una capa de composición por hardware.

⚠️Aparece un efecto de escalera dentado o artefactos de antialiasing en esquinas redondeadas en Safari WebKit

WebKit presenta un problema documentado de antialiasing subpíxel al combinar border-radius externo con sombras box-shadow interiores (inset). Corrígelo definiendo explícitamente -webkit-mask-image: -webkit-radial-gradient(white, black), agregando transform: translateZ(0) y asegurándote de que los valores de border-radius utilicen números enteros de píxeles en lugar de decimales fraccionarios en rem.

⚠️La sombra no se adapta a la silueta transparente de un icono PNG o vector SVG

La propiedad CSS box-shadow calcula la proyección únicamente a partir del border-box rectangular del elemento y su curvatura de border-radius, ignorando por completo los píxeles transparentes internos. Para proyectar una silueta que se adapte a los bordes de un PNG transparente o trazados vectoriales SVG, sustituye box-shadow por filter: drop-shadow(x y blur color), teniendo en cuenta que filter: drop-shadow no admite los parámetros spread ni inset.

Preguntas frecuentes (FAQ)

¿Por qué las sombras CSS multicapa lucen más realistas que las sombras de una sola capa?▼

Las sombras CSS de una sola capa emplean un desenfoque gaussiano lineal uniforme que no replica el comportamiento óptico del mundo físico. En entornos reales, un objeto iluminado proyecta dos zonas de sombra diferenciadas: una umbra de contacto oscura y definida en la base (oclusión ambiental) y una penumbra difusa, suave y de bajo contraste hacia el exterior. Apilar de 3 a 6 capas de box-shadow con atenuación exponencial de distancia y desenfoque (p. ej., y_i = d * (i/n)^2.2, blur_i = b * (i/n)^2.0, alpha_i = alpha_max * e^(-0.6i)) recrea con fidelidad la oclusión ambiental y la dispersión volumétrica de la luz.

¿Cuál es la diferencia entre CSS box-shadow y filter: drop-shadow()?▼

La propiedad CSS box-shadow se aplica estrictamente al border-box rectangular del elemento (respetando border-radius), ignorando transparencias internas y pseudoelementos. En contraste, filter: drop-shadow() evalúa la máscara del canal alfa real de los píxeles renderizados, proyectando sombras alrededor de los contornos de imágenes PNG transparentes, trazados SVG en línea y formas con CSS clip-path. Sin embargo, filter: drop-shadow() no admite el parámetro spread-radius ni la palabra clave inset, y el uso de múltiples filtros drop-shadow genera una carga mayor en la composición por GPU.

¿Cómo evitar sombras grises apagadas sobre fondos de color en CSS?▼

Las sombras negras puras (rgba(0, 0, 0, 0.15)) sobre superficies cromáticas producen un contorno grisáceo sucio y desaturado porque la mezcla alfa en el espacio sRGB degrada el croma del fondo. Para obtener sombras ricas y profundas, toma el tono del fondo, gíralo entre 10° y 20° hacia un matiz complementario más oscuro (p. ej., un fondo naranja hacia sombra tostada rojiza o un fondo azul hacia azul marino medianoche), incrementa la saturación entre un 15% y un 30% y reduce la luminosidad al 10%–20%. En CSS moderno, esto puede automatizarse con color-mix(in oklch, var(--bg-color), black 80%).

¿Cómo optimizar animaciones con box-shadow a 60 fps sin provocar caídas de rendimiento en la GPU?▼

Nunca animes directamente la propiedad box-shadow; esto obliga a la CPU y GPU del navegador a recalcular matrices pesadas de desenfoque gaussiano en cada frame (disparando fases costosas de Paint y Composite). En su lugar, renderiza un pseudoelemento ::after persistente con la sombra elevada ya procesada, asígnale opacity: 0 inicial y anima opacity junto con transform: translateY(-2px) en :hover o :focus. Dado que opacity y transform operan por completo en el hilo del compositor de la GPU sin activar recálculos de Layout ni Paint, las animaciones se ejecutan a 60 fps/120 fps constantes sin saltos de fotogramas.

¿Cuál es la escala ideal de elevación de box-shadow para un design system?▼

Los sistemas de diseño de referencia (como Material Design, Tailwind CSS y Apple HIG) estructuran las sombras en una jerarquía de elevación de 5 a 6 niveles en el eje Z: Elevación 1 (tarjetas/botones en reposo: 1-2px de offset-y, 3-4px de blur, 5-8% de opacidad para separación sutil), Elevación 2 (tarjeta en hover/botón elevado: 4-6px de offset-y, 8-12px de blur, 10-12% de opacidad), Elevación 3 (menú desplegable/popover: 8-12px de offset-y, 16-24px de blur, 12-15% de opacidad), Elevación 4 (diálogo modal/drawer: 16-24px de offset-y, 32-48px de blur, 15-20% de opacidad) y Elevación 5 (toast/notificación flotante: 24-32px de offset-y, 48-64px de blur, 20-25% de opacidad con resplandor ambiental perimetral).

¿Afecta CSS box-shadow a la disposición de la página o dispara un reflow?▼

No, box-shadow no altera el flujo ni el diseño del documento, no incrementa las dimensiones del bounding box del elemento y no dispara recálculos de layout ni reflow en el DOM al aplicarse o alternarse. No obstante, al renderizarse fuera del modelo de caja del elemento, radios de desenfoque o expansión muy amplios pueden solaparse con elementos adyacentes, ocultar texto o generar barras de desplazamiento horizontal no deseadas si la sombra sobrepasa el ancho de la ventana (a menos que esté contenida con overflow: hidden).

Herramientas y utilidades relacionadas

Todas las herramientas →