我正在尝试在 JavaScript 中进行定位。我正在使用基于经典 quirksmode 函数的累积位置函数,该函数对每个函数求和offsetTop
,直到顶部节点。offsetLeft
offsetParent
但是,我遇到了一个问题,我感兴趣的元素offsetParent
在 Firefox 中没有。在 IEoffsetParent
中存在,但offsetTop
总和offsetLeft
为 0,因此在效果上与 Firefox 中存在相同的问题。
什么会导致在屏幕上清晰可见且可用的元素没有offsetParent
? 或者,更实际地,我怎样才能找到这个元素的位置以便在它下面放置一个下拉菜单?
编辑:以下是如何重现此特定实例的方法(当前接受的答案未解决):
- 打开Stack Overflow 的主页。
在 Web 浏览器(例如 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
为什么是offsetParent
那个元素null
?