El índice Z (z-index) es una propiedad de CSS que controla el orden de apilamiento de los elementos en una página web. Es especialmente útil cuando se trabaja con elementos posicionados (por ejemplo, elementos con position: absolute, position: relative, position: fixed, o position: sticky). Esta propiedad determina qué elementos se superponen a otros.
Conceptos Clave
-
Orden de Apilamiento (Stacking Order):
- El orden de apilamiento es la forma en que los elementos HTML se superponen entre sí en el eje Z (perpendicular a la pantalla).
- Los elementos con un índice Z mayor se apilan sobre los elementos con un índice Z menor.
-
Contexto de Apilamiento (Stacking Context):
- Un contexto de apilamiento es un grupo de elementos con un orden de apilamiento particular.
- Se crea un nuevo contexto de apilamiento en los siguientes casos:
- Un elemento raíz del documento (el elemento
<html>). - Un elemento con una posición diferente a
staticy un índice Z distinto deauto. - Elementos con ciertas propiedades CSS como
opacitymenor a 1,transform,filter,perspective, entre otros.
- Un elemento raíz del documento (el elemento
Sintaxis
.element {
position: relative; /* o absolute, fixed, sticky */
z-index: 10; /* Valor del índice Z */
}Ejemplo Práctico
Vamos a ver un ejemplo práctico para entender cómo funciona el z-index.
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ejemplo de z-index</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="caja caja1">Caja 1</div> <div class="caja caja2">Caja 2</div> <div class="caja caja3">Caja 3</div> </body> </html>
CSS
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
}
.caja {
width: 100px;
height: 100px;
position: absolute;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: 20px;
font-family: Arial, sans-serif;
}
.caja1 {
background-color: red;
top: 50px;
left: 50px;
z-index: 1;
}
.caja2 {
background-color: green;
top: 100px;
left: 100px;
z-index: 2;
}
.caja3 {
background-color: blue;
top: 150px;
left: 150px;
z-index: 3;
}Explicación del Código
- HTML: Hemos creado tres
divcon la clasecajay clases adicionalescaja1,caja2, ycaja3. - CSS:
- Establecemos un contenedor
bodycondisplay: flexpara centrar los elementos. - Cada
divtiene una posiciónabsolutepara que podamos controlar su posición y orden de apilamiento. - Asignamos diferentes valores de
z-indexa cadadiv:caja1tienez-index: 1.caja2tienez-index: 2.caja3tienez-index: 3.
- Establecemos un contenedor
Resultado
caja3(azul) se superpone acaja2(verde) ycaja1(roja) debido a su mayorz-index.caja2se superpone acaja1pero está debajo decaja3.
Ejercicio Práctico
Ejercicio
Crea una página con cuatro elementos posicionados de manera que se superpongan en el siguiente orden: caja4 sobre caja3, caja3 sobre caja2, y caja2 sobre caja1.
Solución
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ejercicio de z-index</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="caja caja1">Caja 1</div> <div class="caja caja2">Caja 2</div> <div class="caja caja3">Caja 3</div> <div class="caja caja4">Caja 4</div> </body> </html>
CSS
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
}
.caja {
width: 100px;
height: 100px;
position: absolute;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: 20px;
font-family: Arial, sans-serif;
}
.caja1 {
background-color: red;
top: 50px;
left: 50px;
z-index: 1;
}
.caja2 {
background-color: green;
top: 100px;
left: 100px;
z-index: 2;
}
.caja3 {
background-color: blue;
top: 150px;
left: 150px;
z-index: 3;
}
.caja4 {
background-color: purple;
top: 200px;
left: 200px;
z-index: 4;
}Explicación
- Hemos añadido una cuarta caja (
caja4) conz-index: 4. caja4se superpone a todas las demás cajas debido a su mayorz-index.
Conclusión
El z-index es una herramienta poderosa para controlar el orden de apilamiento de los elementos en una página web. Comprender cómo funciona y cómo crear contextos de apilamiento te permitirá diseñar interfaces más complejas y visualmente atractivas. Asegúrate de practicar con diferentes valores y configuraciones para dominar su uso.
Maestría en CSS: De Principiante a Avanzado
Módulo 1: Introducción a CSS
- ¿Qué es CSS?
- Sintaxis y Selectores de CSS
- Cómo Añadir CSS a HTML
- Propiedades Básicas de CSS
- Colores en CSS
- Unidades y Medidas en CSS
Módulo 2: Estilización de Texto y Fuentes
- Propiedades de Texto
- Propiedades de Fuentes
- Integración de Google Fonts
- Alineación y Espaciado de Texto
- Decoración y Transformación de Texto
Módulo 3: Modelo de Caja y Diseño
- Entendiendo el Modelo de Caja
- Margen y Relleno
- Borde y Contorno
- Ancho y Alto
- Tamaño de Caja
- Propiedad Display de CSS
Módulo 4: Posicionamiento y Flotación
- Propiedad Position de CSS
- Posicionamiento Estático, Relativo, Absoluto y Fijo
- Flotación y Limpieza en CSS
- Creando Diseños con Flotación
- Índice Z en CSS
Módulo 5: Flexbox
- Introducción a Flexbox
- Propiedades del Contenedor Flex
- Propiedades del Ítem Flex
- Creando Diseños con Flexbox
- Diseño Responsivo con Flexbox
Módulo 6: CSS Grid
- Introducción a CSS Grid
- Propiedades del Contenedor Grid
- Propiedades del Ítem Grid
- Creando Diseños con CSS Grid
- Diseño Responsivo con CSS Grid
Módulo 7: Técnicas Avanzadas de CSS
Módulo 8: Diseño Responsivo
- Introducción al Diseño Responsivo
- Consultas de Medios
- Tipografía Responsiva
- Imágenes Responsivas
- Diseño Mobile-First
Módulo 9: Preprocesadores y Frameworks
- Introducción a los Preprocesadores de CSS
- Conceptos Básicos de Sass
- Conceptos Básicos de Less
- Introducción a los Frameworks de CSS
- Usando Bootstrap
Módulo 10: Mejores Prácticas y Optimización
- Mejores Prácticas de CSS
- Organización del Código CSS
- Minificación de CSS
- Optimización del Rendimiento de CSS
- Depuración de CSS
