Я пытаюсь вставить div в любую часть тела и сделать его position: absolute
относительным ко всему документу, а не к родительскому элементу с расширением position: relative
.
Я пытаюсь вставить div в любую часть тела и сделать его position: absolute
относительным ко всему документу, а не к родительскому элементу с расширением position: relative
.
Ответы:
Вам нужно будет разместить div
внешнюю часть position:relative
элемента и внутрь body
.
position:fixed
и position:absolute
не имеют такого же поведения. Фиксированный относится к области просмотра (а не к документу) и приведет к тому, что элемент всегда будет виден даже после прокрутки, потенциально вызывающей перекрытия и т. Д. Я понимаю, что могут быть веские причины для структуры html, но поскольку вопрос конкретно касается html и css, мой ответ правильный. Единственный способ без JS сделать его относительным к документу - это переместить его из position:relative
элемента.
Вы ищите position: fixed
.
Из MDN :
Фиксированное позиционирование похоже на абсолютное позиционирование, за исключением того, что блок, содержащий элемент, является окном просмотра. Это часто используется для создания плавающего элемента, который остается в том же положении даже после прокрутки страницы.
Мое решение заключалось в использовании jQuery для перемещения div за пределы его родителя:
<script>
jQuery(document).ready(function(){
jQuery('#loadingouter').appendTo("body");
});
</script>
<div id="loadingouter"></div>
Если вы не хотите прикреплять элемент к body
, подойдет следующее решение.
Я пришел к этому вопросу в поисках решения, которое работало бы без присоединения div к телу, потому что у меня был скрипт наведения курсора мыши, который я хотел запустить, когда указатель мыши наведен как на новый элемент, так и на элемент, который его породил. Если вы готовы использовать jQuery и вдохновлены ответом @Liam William:
var leftOffset = <<VALUE>>;
var topOffset = <<VALUE>>;
$(element).css("left", leftOffset - element.offset().left);
$(element).css("top", topOffset - element.offset().top);
Это решение работает путем вычитания текущего левого и верхнего положения элемента (относительно тела), чтобы переместить элемент в 0, 0. Затем разместить элемент в любом месте относительно тела так же просто, как добавить смещение влево и вверх. значение.
Это невозможно с простыми CSS и HTML.
Используя Javascript / jQuery, вы потенциально можете получить элементы jQuery.offset()
в DOM и сравнить их, jQuery.position()
чтобы вычислить, где они должны отображаться на странице.
jQuery.offset({ left: 0 })
для победы!
<body>
тега, нет?