Je souhaite positionner un div par rapport aux autres éléments de la page.
Voici le CSS initial :
#puzzle { display:inline-block; vertical-align: top; (position: static;) } #success { display: none; position: absolute; top: 235px; left: 130px; border: 3px solid blue; border-radius:25px; color: blue; background-color: #cfd; text-align:center; padding:40px; font-size:20pt; }
En cas de besoin, j'exécute le code suivant :
let p = puz.getBoundingClientRect(); let s = getelem("success"); s.style.left = p.left; s.style.top = p.top; s.style.display = "block";
Le résultat est :
puz.getBoundingClientRect() DOMRect { x: 38, y: 183, ... } document.getElementById("success").getBoundingClientRect() DOMRect { x: 38, y: 33.833 ... }
(X et Y sont synonymes de Gauche et Haut)
Ça ressemble à ça :
La question est : Pourquoi s.top est-il différent de p.top ?
#success est positionné de manière absolue, donc le flux d'autres éléments dans le DOM n'affecte pas son positionnement, tandis que
top
等属性会影响其定位,而 #puzzle 的位置为static
(默认),并且不受top
est similaire, mais adapté au flux de documents.De https://www.w3schools.com/Css/css_positioning.asp
Si vous voulez que #success soit dans le coin supérieur gauche du #puzzle, vous pouvez définir
position:relative
sur le #puzzle et vous assurer qu'il est le parent de #success dans le HTML.