Estoy tratando de hacer posicionamiento en JavaScript. Estoy usando una función de posición acumulada basada en classic quirksmode function que suma offsetTop
y offsetLeft
para cada offsetParent
hasta el nodo superior.¿Qué haría que offsetParent sea nulo?
Sin embargo, me encuentro con un problema donde el elemento que me interesa no tiene offsetParent
en Firefox. En IE offsetParent
existe, pero offsetTop
y offsetLeft
todos suman hasta 0, por lo que tiene el mismo problema en vigor que en Firefox.
¿Qué causaría que un elemento que es claramente visible y utilizable en la pantalla no tenga un offsetParent
? O, más prácticamente, ¿cómo puedo encontrar la posición de este elemento para colocar un menú desplegable debajo?
Editar: He aquí cómo reproducir un caso particular de este (no resuelto por la respuesta aceptada actualmente):
- Abra la home page of Stack Overflow.
ejecute el código siguiente en la consola del navegador web (por ejemplo 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
¿Por qué es el offsetParent
de ese elemento null
?
Por favor, publique código de muestra. –
Un ejemplo del mundo real que muestra el elemento defectuoso ayudaría ... – PhiLho
En su caso, es debido a 'posición: fijo' - no hay matriz de diseño – Bergi