J'essaie de faire du positionnement en JavaScript. J'utilise une fonction de position cumulative basée sur le classic quirksmode function qui résume offsetTop
et offsetLeft
pour chaque offsetParent
jusqu'au nœud supérieur.Qu'est-ce qui rendrait offsetParent nul?
Cependant, je suis confronté à un problème où l'élément qui m'intéresse n'a pas offsetParent
dans Firefox. Dans IE offsetParent
existe, mais offsetTop
et offsetLeft
résument tous à 0, de sorte qu'il a le même problème en vigueur que dans Firefox.
Qu'est-ce qui provoquerait un élément clairement visible et utilisable à l'écran pour ne pas avoir un offsetParent
? Ou, plus concrètement, comment puis-je trouver la position de cet élément pour y placer une liste déroulante?
Modifier: Voici comment reproduire un cas particulier de ce (non résolu par la réponse actuellement acceptée):
- Ouvrez le home page of Stack Overflow.
Exécutez le code suivant dans la console du navigateur Web (par exemple Chromev21):
var e = document.querySelector('div'); console.log(e); // <div id="notify-container"></div> do{ var s = getComputedStyle(e); console.log(e.tagName,s.display,s.visibility,s.position,e.offsetParent); } while(e=e.parentElement) // DIV block visible fixed null // BODY block visible static null // HTML block visible static null
Pourquoi le offsetParent
de cet élément null
?
Veuillez poster quelques exemples de code. –
Un exemple réel montrant l'élément défectueux aiderait ... – PhiLho
Dans votre cas, c'est à cause de 'position: fixed' - il n'y a pas de parent layout – Bergi