Si alguna vez has creado una página web y te has encontrado con elementos que se solapan, probablemente ya te habrás topado con el famoso z-index
. Pero... ¿realmente sabes cómo funciona? En este artículo vamos a desentrañar qué es z-index en CSS, cuándo utilizarlo, cómo evitar errores típicos y qué herramientas existen para ayudarte a dominarlo de una vez por todas.
Desde Overant, como especialistas en diseño web en Alicante, creemos que entender el z-index
es básico para cualquier desarrollador o diseñador web que quiera tener control total sobre la interfaz de usuario. Vamos a ello.
En el mundo del diseño web, los elementos HTML se apilan visualmente como si fueran capas. Imagina una pila de cartas: el que está más arriba, tapa al de abajo. Pues en la web, eso lo controla el z-index
.
El z-index
define la profundidad de un elemento. Cuanto más alto el valor, más cerca del usuario está visualmente. Si no defines nada, el navegador decide por ti, y ahí empiezan los problemas...
¡Ojo con esto! El z-index solo funciona si el elemento tiene una propiedad position
distinta de static
, que es el valor por defecto. Es decir, necesitas usar relative
, absolute
, fixed
o sticky
. Si no, puedes poner z-index: 9999
y no servirá de nada. Literal.
.elemento {
position: relative;
z-index: 10;
}
El z-index
acepta valores enteros positivos, negativos o cero. Lo interesante es que no necesitas valores enormes para que funcione. Un z-index: 2
ya puede estar encima de un z-index: 1
. Usar z-index: 9999
es... innecesario. Y un pelín feo, seamos sinceros.
.caja1 {
position: relative;
z-index: 2;
}.caja2 {
position: relative;
z-index: 1;
}
Pues que gana... ¡el que esté más abajo en el HTML! Sí, el orden de aparición en el documento también cuenta. Así que, si tienes dos elementos con el mismo z-index
, el último en el código estará encima.
Seguro que alguna vez has abierto un menú y... ¡sorpresa! Se queda por detrás del contenido. En estos casos, el z-index
bien usado es tu salvación.
.menu {
position: absolute;
z-index: 100;
}
Otro clásico: banners promocionales que deberían estar encima de todo... pero se ven cortados. O tooltips que desaparecen bajo el contenido. Aquí el z-index
bien gestionado te ahorra más de un quebradero de cabeza.
Los errores más comunes:
No tener position
definido.
Estar dentro de un contenedor con z-index
menor.
Confundir el stacking context (contexto de apilamiento), que cambia si un padre tiene transform
, opacity
, filter
, etc.
Crea escalas lógicas y coherentes. Por ejemplo:
Base: z-index: 1–10
Menús: 10–20
Modales: 30–50
Alertas o overlays: 100
Documenta tu sistema en el código o en una hoja compartida del proyecto.
Esto ya lo hemos mencionado pero, de verdad: tener una escala coherente es vital para no volver loco al equipo de desarrollo. Usa nombres en las clases que indiquen su rol (.overlay
, .popup
, .tooltip
) y documenta siempre en comentarios.
Evita el típico z-index: 99999
que aparece por desesperación. Suele ser señal de que algo no está bien estructurado. No uses !important
si puedes evitarlo. Si te ves haciéndolo... respira y revisa tu jerarquía de capas.
Los DevTools de Chrome, Firefox o Safari te permiten inspeccionar la jerarquía visual de los elementos. Activa el modo "inspect" y revisa el z-index
de cada capa. Puedes modificar los valores en directo y ver qué pasa. Brutal para depurar.
Algunas herramientas top:
VisBug (extensión para Chrome): permite modificar visualmente z-index y otros estilos.
CSS Peeper: para ver el estilo visual de cada elemento.
z-Index Viewer (para Firefox): muestra visualmente el stacking de cada elemento.
El z-index
puede parecer algo menor, pero cuando estás diseñando interfaces modernas, la gestión de capas lo es todo. Desde modales hasta menús, banners, tooltips... dominar esta propiedad es esencial para garantizar una experiencia de usuario pulida y profesional.
Si estás montando tu web o estás harto de pelearte con capas que no se comportan como deberían, en Overant podemos ayudarte. Somos expertos en diseño web en Alicante y trabajamos cada detalle del frontend para que funcione perfecto.
¿Hablamos?