Z-index no trata solo de números grandes. Es la arquitectura tridimensional del Rendering Pipeline del navegador. Aprende a controlar cómo los elementos se superponen y por qué tu `z-index: 9999` a veces falla miserablemente.
1Resumen rápido: ¿Qué es el Z-index?
<article>
<p>El <strong>z-index</strong> controla el eje Z en CSS. Solo funciona en elementos con position (relative, absolute, fixed, sticky). Si dos elementos tienen el mismo z-index, prevalece el que aparezca último en el HTML.</p>
</article>
2Requisitos de Posicionamiento (Tabla Comparativa)
<article>
<p>El error más común en frontend es aplicar un z-index a un elemento estático. Observa la tabla:</p>
| Propiedad position | ¿Admite z-index? | Comportamiento en el Eje Z |
|---|---|---|
| static (Defecto) | ❌ No | Ignora el z-index. Sigue el flujo 2D del DOM. |
| relative | ✅ Sí | Permanece en el flujo, pero puede superponerse. |
| absolute | ✅ Sí | Se eleva del flujo y crea capas flotantes. |
| fixed / sticky | ✅ Sí | Superpone contenido estático al hacer scroll. |
</article>
3El Infierno del Stacking Context
<article>
<p>A veces, un elemento con <code>z-index: 9999</code> aparece debajo de uno con <code>z-index: 2</code>. Esto ocurre debido al <strong>Stacking Context</strong> (Contexto de Apilamiento).</p>
<p>Imagina que cada elemento con position y z-index crea una 'carpeta' cerrada. Si la Carpeta A tiene z-index: 1, y la Carpeta B tiene z-index: 2, <strong>ningún documento dentro de la Carpeta A puede superponerse a la Carpeta B</strong>, sin importar qué tan grande sea su número interno.</p>
</article>
4Errores Comunes: 'Z-index not working'
<article>
<ul>
<li><strong>Error 1: Falta de position.</strong> Solución: Añade <code>position: relative;</code>.</li>
<li><strong>Error 2: Opacidad.</strong> Aplicar <code>opacity: 0.99</code> o <code>transform</code> crea un nuevo contexto de apilamiento automáticamente, alterando el flujo.</li>
<li><strong>Error 3: Z-Index Wars.</strong> Competir con <code>99999</code>. Solución: Usa variables CSS (<code>--z-modal: 100</code>, <code>--z-tooltip: 200</code>).</li>
</ul>
</article>
