Estou tentando inserir um div em qualquer parte do corpo e torná-lo position: absoluterelativo a todo o documento e não a um elemento pai que tenha um position: relative.
Estou tentando inserir um div em qualquer parte do corpo e torná-lo position: absoluterelativo a todo o documento e não a um elemento pai que tenha um position: relative.
Respostas:
Você terá que colocar a parte divexterna do position:relativeelemento e dentro body.
position:fixede position:absolutenão têm o mesmo comportamento. Fixo é relativo à janela de visualização (não ao documento) e fará com que o item esteja sempre visível, mesmo depois de rolar, potencialmente causando sobreposições, etc. Eu entendo que pode haver razões válidas para a estrutura html, mas como a questão é especificamente sobre html e css, minha resposta está correta. A única maneira sem JS de torná-lo relativo ao documento é movê-lo para fora do position:relativeelemento.
Você está procurando position: fixed.
Do MDN :
O posicionamento fixo é semelhante ao posicionamento absoluto, com a exceção de que o bloco que contém o elemento é a janela de visualização. Isso geralmente é usado para criar um elemento flutuante que permanece na mesma posição mesmo depois de rolar a página.
Minha solução foi usar jQuery para mover a div para fora de seu pai:
<script>
jQuery(document).ready(function(){
jQuery('#loadingouter').appendTo("body");
});
</script>
<div id="loadingouter"></div>
Se você não quiser anexar o elemento a body, a solução a seguir funcionará.
Cheguei a esta questão procurando uma solução que funcionasse sem anexar o div ao corpo, porque eu tinha um script de mouseover que queria executar quando o mouse estava sobre o novo elemento e o elemento que o gerou. Contanto que você esteja disposto a usar jQuery e inspirado pela resposta de @Liam William:
var leftOffset = <<VALUE>>;
var topOffset = <<VALUE>>;
$(element).css("left", leftOffset - element.offset().left);
$(element).css("top", topOffset - element.offset().top);
Esta solução funciona subtraindo a posição esquerda e superior atual do elemento (em relação ao corpo) de modo a mover o elemento para 0, 0. Colocar o elemento onde você quiser em relação ao corpo é tão simples quanto adicionar um deslocamento esquerdo e superior valor.
Isso não é possível simplesmente com CSS e HTML.
Usando Javascript / jQuery, você pode potencialmente obter os elementos jQuery.offset()para o DOM e compará-los jQuery.position()para calcular onde eles devem aparecer na página.
jQuery.offset({ left: 0 })para a vitória!
<body>tag, não?