JavaScriptでポジショニングをしようとしています。私は、最上位ノードまでの合計とそれぞれについて、古典的なquirksmode関数に基づく累積位置関数を使用しています。offsetTop
offsetLeft
offsetParent
ただし、offsetParent
Firefoxに関心のある要素がないという問題が発生しています。IEoffsetParent
には存在しますが、offsetTop
合計offsetLeft
が0になるため、Firefoxと同じ問題が発生します。
画面上ではっきりと表示されて使用できる要素に、がない原因は何offsetParent
ですか?または、より実際的には、その下にドロップダウンを配置するために、この要素の位置をどのように見つけることができますか?
編集:これの1つの特定のインスタンスを再現する方法は次のとおりです(現在受け入れられている回答では解決されていません):
- StackOverflowのホームページを開きます。
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
ですか?