2010-01-17 84 views
2

我有以下代碼:直列塊弄亂與相對定位

<HTML> 
<head> 
<style>div{border:dashed 1px silver}</style> 
</head> 
<BODY style="background: #fff;"> 

<div style="position: absolute; background: #0f0; width: 256px; height: 96px; overflow: scroll;"> 

<DIV style=" display: inline-block;position: relative;top: 64px; left: 32px;"> 
<DIV style="width: 18px; height: 14px; float: left; background: #f00;"></DIV> 
<DIV style="float: left">First</DIV> 
<div style="clear: both;"></div></DIV> 

<DIV style=" display: inline-block;position: relative;top: 96px; left: 32px;"> 
<DIV style="width: 18px; height: 14px; float: left; background: #0f0;"></DIV> 
<DIV style="float: left">Second</DIV><div style="clear: both;"></div></DIV> 

</div> 

</BODY> 
</HTML> 

的第二個div不位於32×位置,除非刪除了顯示:內聯塊屬性,該屬性我需要。有沒有解決的辦法?

編輯:它似乎工作,如果我刪除顯示:內聯塊,但然後滾動條將水平出現(因爲該div需要一些不可見的空間)。

回答

1

您應該使用position:absolute元素的方式顯示在position:relative的內部。
另外,要避免水平滾動條,請使用overflow-y

工作例如:http://jsbin.com/uveni3

+0

嘗試運行代碼,您會看到兩個元素,其中第二個* not *位於x:32;即使 - 儘管我把它放在那裏。 – Tower 2010-01-17 12:48:55

+0

哦,但我做到了:http://jsbin.com/aqoju。你能展示一個圖片或類似的網站到你想要達到的目標嗎? – Kobi 2010-01-17 12:58:20

+0

是的,但我不能像這樣使用絕對定位...嘗試我在我的帖子中修改後的版本。 – Tower 2010-01-17 13:10:20

0

當使用 「inline-block的」 屬性,你應該總是在DTD格式開始你的HTML開始標記。放置一個應該解決這個問題。