Sto provando a fare il posizionamento in JavaScript. Sto utilizzando una funzione di posizione cumulativa basata sullo classic quirksmode function che somma offsetTop
e offsetLeft
per ogni offsetParent
fino al nodo superiore.Che cosa renderebbe offsetParent null?
Tuttavia, sto riscontrando un problema in cui l'elemento che mi interessa non ha offsetParent
in Firefox. In IE offsetParent
esiste, ma offsetTop
e offsetLeft
tutto sommato a 0, quindi ha lo stesso problema in vigore come in Firefox.
Che cosa potrebbe causare un elemento che è chiaramente visibile e utilizzabile sullo schermo per non avere un offsetParent
? O, più in pratica, come posso trovare la posizione di questo elemento al fine di posizionare un menu a discesa al di sotto di esso?
Edit: Ecco come riprodurre un caso particolare di questo (non risolto dalla risposta correntemente accettata):
- Aprire il home page of Stack Overflow.
eseguire il seguente codice nella console del browser web (per esempio 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
Perché è la offsetParent
di quell'elemento null
?
Si prega di inviare alcuni codice di esempio. –
Un esempio reale che mostra l'elemento difettoso potrebbe aiutare ... – PhiLho
Nel tuo caso, è a causa di 'position: fixed' - non c'è layout parent – Bergi