我想在JavaScript中进行定位。我正在使用基于classic quirksmode function的累积位置函数,其中每个offsetParent
总计offsetTop
和offsetLeft
,直到顶部节点为止。什么会使offsetParent为空?
但是,我遇到了一个问题,我感兴趣的元素在Firefox中没有offsetParent
。在IE中存在offsetParent
,但offsetTop
和offsetLeft
全部总和为0,所以它具有与Firefox中相同的问题效果。
什么会导致在屏幕上清晰可见和可用的元素没有offsetParent
?或者更实际一点,我如何才能找到这个元素的位置,以便在它下面放置一个下拉菜单?
编辑:下面是如何重现这一特定实例(而不是由当前接受的答案解决):
- 打开home page of 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
这是为什么元件null
的offsetParent
?
请张贴一些示例代码。 – 2008-11-20 18:20:38
一个现实世界的例子显示错误的元素将有助于... – PhiLho 2008-11-20 18:59:00
在你的情况,这是因为`位置:固定' - 没有布局父母 – Bergi 2012-07-24 21:39:43