我想在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