Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Posicionamiento relativo y absoluto CSS: Posicionamiento de elementos

Hasta ahora, hemos hablado de cómo el posicionamiento absoluto sitúa un elemento en la página en relación con el borde del navegador. Sin embargo, este comportamiento no siempre es lo que queremos. A veces, necesitamos colocar un elemento en relación con otro, como en el caso de una ventana emergente con un botón de cierre en la esquina.

¿Por qué no siempre es útil el posicionamiento absoluto respecto a la página?

Hay dos razones principales:

👉 Queremos posicionar un elemento en relación con su contenedor, no con toda la página.
Imagina que tienes una tarjeta con un botón de cierre en la esquina superior derecha. Si el botón se posiciona respecto a la página, se moverá fuera de la tarjeta, lo que no es lo que buscamos.

👉 El tamaño de la página puede cambiar.
Si un elemento se posiciona absolutamente en la página, sus coordenadas se calcularán desde el borde superior izquierdo de la página. Pero si la página cambia de tamaño (por ejemplo, si el usuario redimensiona la ventana del navegador), ese elemento puede moverse de una forma no deseada.

Posicionar un botón de cierre dentro de un bloque

Vamos a ver un caso práctico: queremos crear un cuadro con un botón de cierre en la esquina superior derecha. Queremos que este botón siempre esté dentro del cuadro, sin importar dónde esté ubicado en la página.

Aquí es donde el posicionamiento absoluto nos ayuda. Con top y right, podemos asegurarnos de que el botón esté siempre en la esquina de su contenedor.

Pero, ¿cómo hacemos para que este botón se posicione dentro del bloque en lugar de hacerlo en toda la página?

La clave es el posicionamiento relativo en el elemento padre.

Clave: el posicionamiento relativo del padre

Por defecto, un elemento con position: absolute se posiciona en relación con el borde de la página, a menos que uno de sus elementos padres tenga un posicionamiento diferente al estándar (estático). Si el contenedor del botón tiene position: relative;, cualquier elemento dentro de él que tenga position: absolute; se posicionará en relación a este contenedor, y no a toda la página.

Código de ejemplo

<div class="modal">
  <button class="close-button">X</button>
  <p>Este es un cuadro modal con un botón para cerrarlo.</p>
</div>
.modal {
  position: relative; /* Hacemos que este elemento sea el referente para los elementos absolutos dentro de él */
  width: 300px;
  padding: 20px;
  background: lightgray;
  border: 1px solid black;
}

.close-button {
  position: absolute; /* Lo posicionamos en relación con el .modal */
  top: 10px;  /* Se coloca 10px desde la parte superior del .modal */
  right: 10px; /* Se coloca 10px desde la parte derecha del .modal */
  background: red;
  color: white;
  border: none;
  padding: 5px;
  cursor: pointer;
}

¿Qué está pasando aquí?

1️⃣ .modal tiene position: relative;, lo que significa que cualquier elemento con position: absolute; dentro de él se posicionará en relación al contenedor .modal en lugar de a la página.

2️⃣ .close-button tiene position: absolute;, lo que le permite moverse usando top y right dentro del .modal, situándose en la esquina superior derecha.

Como resultado, el botón siempre quedará en la esquina superior derecha del cuadro, sin importar dónde esté ubicado el cuadro en la página.

👉 Haz clic para ver el ejemplo: Ver ejemplo en CodePen


Resumen

  • Normalmente, un elemento con position: absolute; se posiciona con respecto al borde de la página.
  • Si queremos que un elemento con position: absolute; se posicione en relación con su contenedor, debemos asegurarnos de que el contenedor tenga position: relative;.
  • top, right, bottom y left controlan la posición del elemento respecto a su contenedor padre más cercano con posición relativa.
  • Este método es muy útil para situar botones de cierre, elementos flotantes o iconos en esquinas específicas dentro de un contenedor.

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY