Estou tentando inserir um div em qualquer parte do corpo e torná-lo position: absolute
relativo 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: absolute
relativo a todo o documento e não a um elemento pai que tenha um position: relative
.
Respostas:
Você terá que colocar a parte div
externa do position:relative
elemento e dentro body
.
position:fixed
e position:absolute
nã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:relative
elemento.
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?