> Faqs > Cómo posicionar un elemento absoluto con respecto al contenedor donde se encuentra

Cómo posicionar un elemento absoluto con respecto al contenedor donde se encuentra

Necesito posicionar con CSS un elemento para que esté en la esquina superior derecha de otro elemento. Es decir, es un elemento hijo, que quiero posicionar dentro del elemento padre, en un lugar determinado.

He usado el position absolute, para que me permita usar las propiedades left / right y top / bottom. Sin embargo, se posiciona con respecto a la página completa y no al contenedor donde lo colocas.

.favorite {
    position: absolute;
    top: 3px;
    right: 3px;
}

Cómo puedo posicionar relativo al contenedor?

Respuestas

La respuesta es bien sencilla:

En CSS, Position: absolute posiciona siempre:

  • Con respecto al primer padre que exista con un posicionamiento distinto de static.
  • Si no hay ningún elemento al que se le haya aplicado un position distinto de static, entonces se posiciona con respecto al contenedor principal, lo que generalmente equivale al body de la página

Sabiendo lo anterior, para posicionar un elemento con respecto al padre, entonces al padre le tienes que aplicar un valor de position que sea distinto de static.

Por ejemplo, con este HTML:

<div class="contenedor">
  <div class="favorite">
    Fav
  </div>
  <p>Este es el contenido del contenedor. Puede ser tan largo como quieras.</p>
  <p>Lo importante es que este contenedor tenga un position definido, como "relative".</p>
</div>

Si quieres que la división con class="favorite" se posicione en la esquina superior derecha del contenedor, tendrías que tener un CSS como el que tú mostrabas, pero además el contenedor debería tener un position: relative.

.contenedor {
    position: relative;
}
.favorite {
    position: absolute;
    top: 3px;
    right: 3px;
}

Con esto ya lo tienes solucionado. Lo importante es tener claros los valores de position. Puedes leer más sobre Posicionamiento CSS.

Luis Enrique
34 1 2 1
Gracias por la explicación!