J'essaie d'insérer un div dans n'importe quelle partie du corps et de le rendre position: absolute
relatif au document entier et non à un élément parent qui a un position: relative
.
html
css
css-position
Timothy Ruhle
la source
la source
<body>
balise, non?Réponses:
Vous devrez placer l'
div
extérieur de l'position:relative
élément et dansbody
.la source
position:fixed
etposition:absolute
n'ont pas le même comportement. Fixe est relatif à la fenêtre d'affichage (pas au document) et fera en sorte que l'élément soit toujours visible même après le défilement causant potentiellement des chevauchements, etc. Je comprends qu'il peut y avoir des raisons valables pour la structure html, mais comme la question concerne spécifiquement html et css, ma réponse est correcte. Le seul moyen sans JS de le rendre relatif au document est de le déplacer hors de l'position:relative
élément.Vous cherchez
position: fixed
.De MDN :
la source
Ma solution était d'utiliser jQuery pour déplacer le div en dehors de son parent:
<script> jQuery(document).ready(function(){ jQuery('#loadingouter').appendTo("body"); }); </script> <div id="loadingouter"></div>
la source
Si vous ne souhaitez pas attacher l'élément à
body
, la solution suivante fonctionnera.Je suis venu à cette question à la recherche d'une solution qui fonctionnerait sans attacher le div au corps, car j'avais un script de survol de la souris que je voulais exécuter lorsque la souris était à la fois sur le nouvel élément et sur l'élément qui l'a engendré. Tant que vous êtes prêt à utiliser jQuery et inspiré par la réponse de @Liam William:
var leftOffset = <<VALUE>>; var topOffset = <<VALUE>>; $(element).css("left", leftOffset - element.offset().left); $(element).css("top", topOffset - element.offset().top);
Cette solution fonctionne en soustrayant la position actuelle gauche et supérieure de l'élément (par rapport au corps) afin de déplacer l'élément à 0, 0. Placer l'élément où vous voulez par rapport au corps est alors aussi simple que d'ajouter un décalage gauche et haut valeur.
la source
Ce n'est pas possible avec simplement CSS et HTML.
En utilisant Javascript / jQuery, vous pourriez potentiellement obtenir les éléments
jQuery.offset()
dans le DOM et les comparerjQuery.position()
pour calculer où ils devraient apparaître sur la page.la source
jQuery.offset({ left: 0 })
pour la victoire!