Distribución armónica de elevación
Plan Profesional
Previsualiza cómo responde la sombra en tiempo real sobre tarjetas, modales y botones interactivos.
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.
Previsualiza cómo responde la sombra en tiempo real sobre tarjetas, modales y botones interactivos.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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%.
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.
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.
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 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.
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.
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.
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%).
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.
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).
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).
Genera formas poligonales con CSS clip-path mediante nodos interactivos. Copia reglas CSS compatibles, máscaras SVG y coordenadas en porcentajes responsivos.
Extraiga al instante paletas de color a partir de imágenes. Genere muestras dominantes en HEX, RGB y HSL, exporte tokens para CSS o Tailwind y verifique el contraste de accesibilidad WCAG.
Calcula dimensiones de proporción áurea y rectángulos dorados al instante. Divide longitudes según phi (1,618), escala tipografía y crea cuadrículas responsivas.
Genera sombras CSS neumórficas y Soft UI con superficies extruidas, hundidas, planas y cóncavas. Copia código limpio en CSS, Tailwind o SCSS al instante.
Genera esquemas armónicos de color al instante. Crea paletas complementarias, análogas, triádicas y adyacentes con verificación de contraste WCAG en tiempo real y exportación CSS.
Genera código CSS moderno de glassmorphism y vidrio esmerilado con controles interactivos de desenfoque backdrop-filter, opacidad, bordes y sombras. Copia HTML y CSS limpios al instante.