2011-08-31 81 views
1

我的HTML頁面中唯一具有position: relative;風格的元素是body。父絕對定位問題

身體裏面是:

<div id="nav" style="position:absolute;top:275px;left:50%;margin-left:-350px;"> 
    <div>foo</div> 
    <div>bar</div> 
</div> 

#nav#nav div CSS有position: absolute;

風格所以#nav格出現在頁面的中間。

現在因爲身體是相對的,並且是唯一的相對元素,#nav div元素(「foo」和「bar」)上的left:0樣式應該將元素放置在身體左側的0像素處。但不幸的是,foo和bar被定位在#nav元素左側的0像素處。爲什麼是這樣?

我的印象是,位置相對的元素在定位方面被視爲「父」,因此foo和bar元素應位於身體左側0像素處。

如果這是不正確的,是否有人知道如何定位這些元素?

如果我的假設是正確的,那麼有人可以告訴我爲什麼在我的情況下,這是行不通的。

謝謝,亞歷克斯

回答

1

這是正確的,因爲當你準確位置(絕對或相對的或固定的),所有的孩子稱這個元素。在你的情況下,由於導航是絕對定位的,導航中的每個div都是相對於導航位置定位的。

解決方法:

  • 外部化你的資產淨值的孩子之外的資產淨值
  • 沒有絕對位置「導航」
+0

我看到,在這種情況下,她擺脫#nav容器。 Thankyou –

+0

不客氣;) –

3

絕對定位的工作原理相對於最近定位的父元素,當定位值相對的,絕對的或固定的。

這意味着在你的情況下,行爲是正確的。由於絕對定位,div#navdiv#nav div的第一個定位父項。如果您希望這些div相對於身體邊緣進行定位,則必須將它們從div#nav中取出。