2013-06-03 59 views
0

如何浮動一個div下絕對定位的div下的3周主要的div(的jsfiddle內部)

/* structure */ 

body { 
    margin:0; 
    padding:0; 
    } 
#break { 
    clear:both; 
    } 

/* header */ 

header { 
    padding:15px; 
    background:silver; 
    } 
#avatar { 
    float:right; 
    } 
#brand { 
    float:left; 
    } 

/* nav */ 

nav { 
    clear:both; 
    } 
#menu1 ul { 
    margin:0; 
    padding:0; 
    } 
#menu1 ul li { 
    list-style-type:none; 
    float:left; 
    margin:0 1px 0 0; 
    width:150px; 
    height:50px; 
    background:orange; 
    } 
#menu2 { 
    clear:both; 
    float:left; 
    margin:1px 0 0 0; 
    } 
#menu2 ul { 
    margin:0; 
    padding:0; 
    } 
#menu2 ul li { 
    list-style-type:none; 
    float:left; 
    margin:0 1px 0 0; 
    width:150px; 
    height:50px; 
    background:orange; 
    } 

/* main */ 

#commentswrapper { 
    clear:both; 
    } 
#comments { 
    clear:both; 
    background:grey; 
    } 
#feature { 
    position:absolute; 
    top:0; 
    left:0; 
    width:600px; 
    background:lime; 
    } 
#images { 
    position:relative; 
    margin:0 300px 0 600px; 
    background:cyan; 
    } 
#recommend { 
    position:absolute; 
    top:0; 
    right:0; 
    width:300px; 
    background:red; 
    } 
#main { 
    position:relative; 
    } 
#mainwrapper { 
    clear:both; 
    position:relative; 
    } 
#title { 
    clear:both; 
    background:brown; 
    } 


@media screen and (max-width:1280px){ 

/* structure */ 

body { 
    margin:0; 
    padding:0; 
    } 
#break { 
    clear:both; 
    } 

/* header */ 

header { 
    padding:15px; 
    background:silver; 
    } 
#avatar { 
    float:right; 
    } 
#brand { 
    float:left; 
    } 

/* nav */ 

nav { 
    clear:both; 
    } 
#menu1 ul { 
    margin:0; 
    padding:0; 
    } 
#menu1 ul li { 
    list-style-type:none; 
    float:left; 
    margin:0 1px 0 0; 
    width:150px; 
    height:50px; 
    background:orange; 
    } 
#menu2 { 
    clear:both; 
    float:left; 
    margin:1px 0 0 0; 
    } 
#menu2 ul { 
    margin:0; 
    padding:0; 
    } 
#menu2 ul li { 
    list-style-type:none; 
    float:left; 
    margin:0 1px 0 0; 
    width:150px; 
    height:50px; 
    background:orange; 
    } 

/* main */ 

#comments { 
    clear:both; 
    background:grey; 
    } 
#feature { 
    position:absolute; 
    top:0; 
    left:0; 
    width:600px; 
    background:lime; 
    } 
#images { 
    margin:0 0 0 600px; 
    } 
#recommend { 
    clear:both; 
    float:left; 
    position:relative; 
    margin:0; 
    width:100%; 
    background:red; 
    } 
#main { 
    position:relative; 
    } 
#mainwrapper { 
    clear:both; 
    float:left; 
    position:relative; 
    } 
#title { 
    clear:both; 
    background:brown; 
    } 
} 
<body> 
    <header> 
     <div id="brand">logo</div> 
     <div id="avatar">avatar</div> 
     <div id="break"></div> 
    </header> 
    <nav> 
     <div id="menu1"> 
      <ul> 
       <a href=""><li>nav1</li></a> 
       <a href=""><li>nav2</li></a> 
       <a href=""><li>nav3</li></a> 
       <a href=""><li>nav4</li></a> 
      </ul> 
     </div> 
     <div id="menu2"> 
      <ul> 
       <a href=""><li>nav1</li></a> 
       <a href=""><li>nav2</li></a> 
       <a href=""><li>nav3</li></a> 
       <a href=""><li>nav4</li></a> 
      </ul> 
     </div> 
    </nav> 
    <div id="title"> 
     title 
    </div> 
    <div id="mainwrapper"> 
     <div id="main"> 
      <div id="feature"> 
       111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 
      </div> 
      <div id="images"> 
       222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 222 
      </div> 
      <div id="recommend"> 
       333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 
      </div> 
     </div> 
    </div> 
    <div id="commentswrapper"> 
     <div id="comments"> 
      comments 
     </div> 
    </div> 
</body> 

http://jsfiddle.net/B95BX/

的#comments DIV,(#feature,#images,#推薦),當瀏覽器收縮到1280像素以下時完美浮動。但是,擴展後,#comments div僅在#images div下浮動,因爲其他兩個div絕對定位。我明白爲什麼這樣做,我只是不知道如何解決它。當瀏覽器大於1280像素時,如何浮動#comments div,同時仍然保留所有3個div填充屏幕時的特性,當中間div(#images)伸縮時最大化?

+0

我可以通過CSS獲得CSS的一面嗎? – dudewad

+0

增加了CSS。如果你按照這個鏈接(http://jsfiddle.net/B95BX/),你可以看到所有的實時輸出,所以你確切地知道我在說什麼。謝謝! – user2441996

回答

0

對不起,你不能在絕對定位的div下浮動任何東西。

將絕對定位的元素從文檔流中提取出來,這意味着它們不再影響頁面上其他元素的流動。

如果您確切知道定位元素的高度,可以通過相對定位或使用邊緣頂部樣式來將註釋元素置於其下方。

否則,您將不得不尋找一個JavaScript解決方案來計算絕對定位元素的高度,並使用它將其他元素移動到所需的位置。

+0

我很害怕這個。你知道我必須使用的JavaScript的名字嗎? – user2441996

+0

那麼,我偏向於jQuery。您可以嘗試使用$('#element')。height()來獲取絕對定位元素的高度,然後調整其下方項目的邊距。我首先看看實現你以後設計的其他方法。如果我希望我的元素能夠影響其他元素在頁面上的佈局,我通常能夠找到一種不需要絕對定位的方法。我可以問爲什麼你需要像這樣定位你的元素? –

+0

當瀏覽器超過1280像素時,我需要3個div以固定的寬度填充屏幕外部的2個div,而中間的div可以拉伸以完全填充中間。如果不使用絕對定位,你有沒有更好的方法來實現這一點? – user2441996

相關問題