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 destatic
, 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.