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
.
html
css
css-position
Timothy Ruhle
fuente
fuente
<body>
etiqueta, ¿no?Respuestas:
Tendrá que colocar el
div
exterior delposition:relative
elemento y el interiorbody
.fuente
position:fixed
yposition: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 delposition:relative
elemento.Estás buscando
position: fixed
.De MDN :
fuente
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>
fuente
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.
fuente
Esto no es posible simplemente con CSS y HTML.
Usando Javascript / jQuery, potencialmente podría llevar los elementos
jQuery.offset()
al DOM y compararlosjQuery.position()
para calcular dónde debería aparecer en la página.fuente
jQuery.offset({ left: 0 })
¡por la victoria!