Estoy tratando de insertar un div en cualquier parte del cuerpo y hacer que sea position: absolute
relativo a todo el documento y no a un elemento principal que tiene una extensión position: relative
.
Estoy tratando de insertar un div en cualquier parte del cuerpo y hacer que sea position: absolute
relativo a todo el documento y no a un elemento principal que tiene una extensión position: relative
.
Respuestas:
Tendrá que colocar el div
exterior del position:relative
elemento y el interior body
.
position:fixed
y position:absolute
no tienen el mismo comportamiento. Fijo es relativo a la ventana gráfica (no al documento) y hará que el elemento sea siempre visible incluso después de desplazarse, potencialmente causando superposiciones, etc. Entiendo que puede haber razones válidas para la estructura html, pero como la pregunta es específicamente sobre html y css, mi respuesta es correcta. La única forma sin JS de hacerlo relativo al documento es sacarlo del position:relative
elemento.
Estás buscando position: fixed
.
De MDN :
El posicionamiento fijo es similar al posicionamiento absoluto, con la excepción de que el bloque contenedor del elemento es la ventana gráfica. Esto se usa a menudo para crear un elemento flotante que permanece en la misma posición incluso después de desplazarse por la página.
Mi solución fue usar jQuery para mover el div fuera de su padre:
<script>
jQuery(document).ready(function(){
jQuery('#loadingouter').appendTo("body");
});
</script>
<div id="loadingouter"></div>
Si no desea adjuntar el elemento body
, la siguiente solución funcionará.
Llegué a esta pregunta buscando una solución que funcionara sin adjuntar el div al cuerpo, porque tenía un script de mouseover que quería ejecutar cuando el mouse estaba sobre el nuevo elemento y el elemento que lo generó. Siempre que esté dispuesto a usar jQuery e inspirado por la respuesta de @Liam William:
var leftOffset = <<VALUE>>;
var topOffset = <<VALUE>>;
$(element).css("left", leftOffset - element.offset().left);
$(element).css("top", topOffset - element.offset().top);
Esta solución funciona restando la posición izquierda y superior actual del elemento (en relación con el cuerpo) para mover el elemento a 0, 0. Colocar el elemento donde desee en relación con el cuerpo es entonces tan simple como agregar un desplazamiento izquierdo y superior. valor.
Esto no es posible simplemente con CSS y HTML.
Usando Javascript / jQuery, potencialmente podría llevar los elementos jQuery.offset()
al DOM y compararlos jQuery.position()
para calcular dónde debería aparecer en la página.
jQuery.offset({ left: 0 })
¡por la victoria!
<body>
etiqueta, ¿no?