CSS: Posicionamiento

Domina el posicionamiento en CSS y crea layouts precisos con técnicas como relative, absolute, fixed y sticky para tus diseños web.

Aprende CSS GRATIS y certifícate

Posicionamiento en CSS

El posicionamiento es uno de los conceptos fundamentales en CSS que determina cómo se ubican los elementos en una página web. Comprender las diferentes técnicas de posicionamiento te permitirá crear layouts precisos y controlar exactamente dónde aparece cada elemento en tu diseño.

¿Qué es el posicionamiento?

Por defecto, los elementos HTML siguen el flujo normal del documento, apareciendo uno después del otro según su orden en el HTML. Sin embargo, CSS nos proporciona herramientas para alterar este comportamiento y colocar elementos en posiciones específicas.

La propiedad position es la base del sistema de posicionamiento en CSS. Esta propiedad acepta diferentes valores que cambian completamente cómo se comporta un elemento en relación con otros elementos y con la ventana del navegador.

Tipos de posicionamiento

Position static

El valor static es el posicionamiento por defecto de todos los elementos. Los elementos con position: static siguen el flujo normal del documento y no pueden ser movidos usando las propiedades top, right, bottom o left.

.elemento {
    position: static; /* Valor por defecto */
}

Position relative

El posicionamiento relativo permite mover un elemento desde su posición original sin afectar el espacio que ocupa en el flujo del documento. El elemento se desplaza en relación a su posición natural.

.caja-relativa {
    position: relative;
    top: 20px;
    left: 30px;
}

En este ejemplo, la caja se moverá 20 píxeles hacia abajo y 30 píxeles hacia la derecha desde su posición original, pero el espacio que ocupaba originalmente se mantiene reservado.

Position absolute

El posicionamiento absoluto saca completamente el elemento del flujo normal del documento. El elemento se posiciona en relación al ancestro posicionado más cercano (un elemento con position diferente a static).

.contenedor {
    position: relative; /* Contexto de posicionamiento */
}

.elemento-absoluto {
    position: absolute;
    top: 10px;
    right: 15px;
}

El elemento con position: absolute se posicionará a 10 píxeles del borde superior y 15 píxeles del borde derecho de su contenedor posicionado más cercano.

Position fixed

Los elementos con posicionamiento fijo se posicionan en relación a la ventana del navegador y permanecen en la misma posición incluso cuando el usuario hace scroll por la página.

.barra-navegacion {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background-color: #333;
}

Esta técnica es muy útil para crear barras de navegación que siempre permanecen visibles o botones de "volver arriba".

Position sticky

El posicionamiento sticky combina características del posicionamiento relativo y fijo. El elemento se comporta como relative hasta que alcanza una posición específica durante el scroll, momento en el que se "pega" como si fuera fixed.

.encabezado-pegajoso {
    position: sticky;
    top: 0;
    background-color: white;
    border-bottom: 1px solid #ddd;
}

Propiedades de desplazamiento

Las propiedades top, right, bottom y left determinan la posición exacta de los elementos posicionados. Estas propiedades solo funcionan con elementos que tienen un valor de position diferente a static.

.elemento-posicionado {
    position: absolute;
    top: 50px;    /* Distancia desde el borde superior */
    left: 100px;  /* Distancia desde el borde izquierdo */
}

Estas propiedades aceptan diferentes unidades: píxeles (px), porcentajes (%), em, rem, y otras unidades de CSS.

La propiedad z-index

Cuando los elementos se superponen, la propiedad z-index controla qué elemento aparece encima de otros. Los elementos con mayor valor de z-index aparecen por encima de aquellos con valores menores.

.elemento-fondo {
    position: absolute;
    z-index: 1;
}

.elemento-frente {
    position: absolute;
    z-index: 10; /* Aparecerá encima */
}

Es importante recordar que z-index solo funciona con elementos posicionados (que tengan position diferente a static).

Contextos de posicionamiento

Un contexto de posicionamiento se crea cuando un elemento tiene cualquier valor de position excepto static. Los elementos con position: absolute se posicionan en relación al contexto de posicionamiento más cercano en la jerarquía HTML.

.contenedor-padre {
    position: relative; /* Crea un contexto */
}

.hijo-absoluto {
    position: absolute;
    bottom: 0;
    right: 0; /* Se posiciona respecto al padre */
}

Si no existe ningún ancestro posicionado, el elemento se posicionará respecto al elemento <html>.

Casos de uso prácticos

El posicionamiento se utiliza frecuentemente para crear overlays, tooltips, menús desplegables y layouts complejos. También es fundamental para crear elementos que deben permanecer en posiciones específicas independientemente del contenido circundante.

.tooltip {
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    background-color: #333;
    color: white;
    padding: 5px 10px;
    border-radius: 4px;
}

Este ejemplo muestra cómo crear un tooltip que aparece centrado debajo de su elemento padre.

Empezar curso de CSS

Lecciones de este módulo de CSS

Lecciones de programación del módulo Posicionamiento del curso de CSS.