Box shadow
Concepto de Desarrollo web en Utilidades, conectado con sus herramientas y conceptos vecinos.
Actualizado el 20 de julio de 2026
La propiedad box-shadow de CSS proyecta una o varias sombras sobre la caja de un elemento HTML. Las sombras no ocupan espacio en el flujo del documento: no empujan a otros elementos ni alteran el layout, solo son un efecto visual.
¿Cuál es la sintaxis de box-shadow?
box-shadow: offset-x offset-y blur-radius spread-radius color;
- offset-x / offset-y: desplazamiento horizontal y vertical en píxeles. Valores positivos mueven la sombra a la derecha y hacia abajo; negativos, a la izquierda y hacia arriba.
- blur-radius: radio de desenfoque. Con
0la sombra es nítida; a partir de8pxempieza a difuminarse notablemente. - spread-radius (opcional): expande (
+) o contrae (-) la sombra respecto al tamaño del elemento. Con0sigue exactamente el contorno. - color: cualquier valor CSS. Se recomienda
rgbapara controlar la opacidad y evitar sombras demasiado duras.
Ejemplo habitual en tarjetas:
.card {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
La sombra está desplazada 4 px hacia abajo, con 12 px de desenfoque y un negro al 15 % de opacidad. Sin desplazamiento horizontal, queda centrada y parece elevarse.
Sombras múltiples
Apila sombras separadas por coma. La primera se dibuja encima:
.boton {
box-shadow:
0 2px 4px rgba(0, 0, 0, 0.25),
0 8px 24px rgba(0, 0, 0, 0.1);
}
Una sombra cercana y nítida más otra lejana y difusa dan sensación de profundidad real. Esta técnica la popularizó el sistema Material Design de Google y hoy es estándar en la mayoría de librerías de componentes.
Sombra interior (inset)
Añade inset al principio para proyectar la sombra hacia dentro del elemento:
.input:focus {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.12);
}
El campo parece hundirse al recibir el foco, dando retroalimentación visual sin cambiar el border.
Errores comunes
- Animar
box-shadowdirectamente: el repintado en cada frame sobrecarga la GPU. Usaopacitysobre un pseudoelemento con la sombra fija, ofilter: drop-shadow(). - Confundir
box-shadowcontext-shadow:text-shadowactúa sobre los glifos del texto;box-shadow, sobre la caja rectangular (o con el contorno deborder-radius) que lo contiene. - Sombras con colores opacos: una sombra en
#000000puro resulta antinatural. Usargba(0, 0, 0, 0.15)o un tono oscuro del color principal del componente para que encaje en el diseño.
Conceptos relacionados
También en Desarrollo web
Preguntas frecuentes
¿Puedo poner varias sombras a la vez con box-shadow?
¿Qué diferencia hay entre box-shadow normal e inset?
¿Animar box-shadow penaliza el rendimiento?
Ver todas las herramientas de Utilidades.