¿Por qué no funciona top: 0 en elementos absolutamente posicionados en relación con el cuerpo?
Puedes ver en el siguiente código que elh1
empuja hacia abajo el cuerpo y el bloque absolutamente posicionado.absolute
No se adhiere a la parte superior. Pero también puede ver que el mismo bloque está pegado en la parte superior de su padre.wrapper
. ¿Por qué?
No estoy preguntando cómo hacer ese truco; Sé cómo, p. relleno en lugar de margen a h1, o clearfix a padre y así sucesivamente.
Solo me interesa una cosa: por quéh1
El margen empuja hacia abajobody
, pero no empuja hacia abajo.wrapper
?
body {
position: relative;
margin: 0;
padding: 0;
overflow: hidden;
background-color: silver;
}
.absolute {
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 50px;
background-color: darkblue;
}
.wrapper {
position: relative;
overflow:hidden;
width: 50%;
height: 200px;
overflow: hidden;
background-color: yellow;
}
.wrapper > .absolute {
background-color: darkcyan;
}
<div class="absolute"></div>
<h1>Some title</h1>
<div class="wrapper">
<div class="absolute"></div>
<h1>Some title</h1>
</div>
OK, intentaré ser más claro. Si hace clic en el enlace de abajo, puede ver mi JSFiddle. Ahi estabackground-color: silver
en elbody
etiqueta. Cuando miro en el inspector de código, veo que la etiqueta del cuerpo comienza un poco más baja debido al margen h1. Perobackground-color
comienza en la parte superior. Esto significa que el inspector de códigos me está mintiendo y el cuerpo comienza desde arriba. ¿Pero por qué, entonces, hace un elemento absolutamente posicionado que es un hijo directo debody
no empezar en la cima?