我正在尝试在JavaScript中进行定位。我正在使用基于classic quirksmode function的累积位置函数,该函数将每个offsetTop
的offsetLeft
和offsetParent
相加,直到顶部节点。
但是,我遇到了一个问题,即我感兴趣的元素在Firefox中没有offsetParent
。在IE中,存在offsetParent
,但是offsetTop
和offsetLeft
的总和为0,因此它实际上具有与Firefox中相同的问题。
什么会导致在屏幕上清晰可见且可用的元素没有offsetParent
?或者,实际上,如何找到该元素的位置以便在其下方放置一个下拉菜单?
编辑:这是重现此特定实例的方法(当前接受的答案未解决):
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
为什么该元素的
offsetParent
为null
? 最佳答案
如果文档尚未完成加载,则offsetParent可以为null