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
.
html
css
css-position
Timothy Ruhle
fonte
fonte
<body>
tag, não?Respostas:
Você terá que colocar a parte
div
externa doposition:relative
elemento e dentrobody
.fonte
position:fixed
eposition: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 doposition:relative
elemento.Você está procurando
position: fixed
.Do MDN :
fonte
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>
fonte
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.
fonte
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á-losjQuery.position()
para calcular onde eles devem aparecer na página.fonte
jQuery.offset({ left: 0 })
para a vitória!