Ich versuche, ein div in einen beliebigen Teil des Körpers einzufügen und es position: absolute
relativ zum gesamten Dokument zu machen und nicht zu einem übergeordneten Element, das ein hat position: relative
.
Ich versuche, ein div in einen beliebigen Teil des Körpers einzufügen und es position: absolute
relativ zum gesamten Dokument zu machen und nicht zu einem übergeordneten Element, das ein hat position: relative
.
Antworten:
Sie müssen die div
Außenseite des position:relative
Elements und hinein platzieren body
.
position:fixed
und position:absolute
haben nicht das gleiche Verhalten. Behoben ist relativ zum Ansichtsfenster (nicht zum Dokument) und bewirkt, dass das Element auch nach dem Scrollen immer sichtbar ist, was möglicherweise zu Überlappungen usw. führt. Ich verstehe, dass es gültige Gründe für die HTML-Struktur geben kann, aber da es sich bei der Frage speziell um HTML und handelt CSS, meine Antwort ist richtig. Die einzige Möglichkeit ohne JS, es relativ zum Dokument zu machen, besteht darin, es aus dem position:relative
Element zu verschieben.
Du suchst position: fixed
.
Von MDN :
Die feste Positionierung ähnelt der absoluten Positionierung, mit der Ausnahme, dass der Block, der das Element enthält, das Ansichtsfenster ist. Dies wird häufig verwendet, um ein schwebendes Element zu erstellen, das auch nach dem Scrollen der Seite an derselben Position bleibt.
Meine Lösung bestand darin, jQuery zu verwenden, um das div außerhalb seines übergeordneten Elements zu verschieben:
<script>
jQuery(document).ready(function(){
jQuery('#loadingouter').appendTo("body");
});
</script>
<div id="loadingouter"></div>
Wenn Sie das Element nicht anhängen möchten, body
funktioniert die folgende Lösung.
Ich kam zu dieser Frage und suchte nach einer Lösung, die funktionieren würde, ohne das div an den Body anzuhängen, da ich ein Mouseover-Skript hatte, das ich ausführen wollte, wenn sich die Maus sowohl über dem neuen Element als auch über dem Element befand, aus dem es hervorging. Solange Sie bereit sind, jQuery zu verwenden, und inspiriert von der Antwort von @Liam William:
var leftOffset = <<VALUE>>;
var topOffset = <<VALUE>>;
$(element).css("left", leftOffset - element.offset().left);
$(element).css("top", topOffset - element.offset().top);
Diese Lösung subtrahiert die aktuelle linke und obere Position des Elements (relativ zum Körper), um das Element auf 0, 0 zu verschieben. Das Platzieren des Elements an der gewünschten Stelle relativ zum Körper ist dann so einfach wie das Hinzufügen eines linken und oberen Versatzes Wert.
Dies ist nicht einfach mit CSS und HTML möglich.
Mit Javascript / jQuery können Sie die Elemente möglicherweise jQuery.offset()
in das DOM übertragen und vergleichen, um jQuery.position()
zu berechnen, wo sie auf der Seite erscheinen sollen.
jQuery.offset({ left: 0 })
für den Sieg!
<body>
Tags, nicht wahr?