Position (Static, Relative, Absolute, Fixed, Sticky)
La propiedad position en CSS determina cómo se ubica un elemento en el documento. Por defecto, todos los elementos tienen un comportamiento de flujo normal, pero podemos alterarlo para crear layouts complejos.
📍 Posicionamientos en CSS (Property: position)
La propiedad position determina cómo se ubica un elemento en el documento. Por defecto, todos los elementos tienen un comportamiento de flujo normal, pero podemos alterarlo para crear layouts complejos.
1️⃣ Static (Por defecto)
Es el valor inicial. El elemento sigue el flujo normal del documento y se posiciona según el orden del HTML.
- Nota: Las propiedades
top,right,bottom,leftyz-indexno tienen efecto en elementos estáticos.
.elemento {
position: static;
}2️⃣ Relative
El elemento se posiciona respecto a su ubicación original. Al moverlo, el espacio que ocupaba inicialmente en el flujo del documento se mantiene vacío (no afecta a los vecinos).
.caja {
position: relative;
top: 20px; /* Se desplaza 20px hacia abajo desde donde debería estar */
left: 10px; /* Se desplaza 10px a la derecha */
}3️⃣ Absolute
El elemento se elimina del flujo normal del documento (no deja espacio vacío) y se posiciona respecto a su ancestro posicionado más cercano (cualquiera que no sea static).
[!IMPORTANT] Si no encuentra ningún padre con
position: relative,absoluteofixed, se posicionará respecto al documento (body).
Ejemplo de Contenedor Relativo + Hijo Absoluto:
/* El padre debe estar posicionado */
.padre {
position: relative;
width: 300px;
height: 300px;
}
/* El hijo se mueve dentro de los límites del padre */
.hijo {
position: absolute;
top: 0;
right: 0; /* Queda pegado a la esquina superior derecha del padre */
}El truco del inset: 0
Para expandir un elemento absoluto a todo el tamaño de su padre:
.overlay {
position: absolute;
inset: 0; /* Atajo para top, right, bottom y left: 0 */
}4️⃣ Fixed
El elemento se posiciona respecto al viewport (la ventana del navegador). Esto significa que se quedará siempre en el mismo lugar, incluso si el usuario hace scroll.
.navbar {
position: fixed;
top: 0;
left: 0;
width: 100%;
}- Uso común: Menús de navegación, botones de "volver arriba", chats flotantes.
5️⃣ Sticky
Es un híbrido entre relative y fixed. El elemento se comporta como relative hasta que alcanza un punto de umbral definido (ej: top: 0) al hacer scroll; en ese momento, se queda "pegado" como un fixed.
.header-tabla {
position: sticky;
top: 0; /* Se queda pegado arriba cuando llegamos a él */
background: white;
}[!WARNING] Condición de Sticky: El elemento solo se mantendrá "pegado" mientras su contenedor padre sea visible en el viewport. Si el padre desaparece al scrollear, el elemento sticky se irá con él.
🧬 Z-Index
Cuando los elementos posicionados se superponen, usamos z-index para decidir cuál va al frente.
- Solo funciona en elementos con
positiondistinto astatic. - A mayor número, más "cerca" del usuario (encima de otros).
.modal {
position: fixed;
z-index: 999; /* Aparece encima de todo */
}Box Model
El Box Model es la base de CSS. Todos los elementos HTML son cajas, y entender cómo funcionan es fundamental para maquetar páginas web.
Colores, Fuentes y Herencia
Indicar colores es fundamental en el diseño web. Existen múltiples formas de hacerlo, desde las más simples hasta modelos avanzados.