2013-09-27 36 views
1

假設我有3 div元素都具有width:50%但是具有不確定的高度。現在說這些元素都具有屬性float:left在列布局中使浮動元素向上滑動以滿足上述元素

由於width:50%屬性,三個元素現在處於兩列布局,第一個元素位於第二個元素的左邊,第三個元素位於第一個元素的下方。

現在,如果第一div50像素高,並且所述第二div200像素高大,第三DIV坐在由較高的div創建的線的下方,並且因此爲150px一個白色的大空間創建於div 1div 3之間。

如何避免發生空白?

PS,div s正在動態生成!

Here's a jsfiddle

+0

小提琴請.. – avrahamcool

+0

@avrahamcool酷,只要給我兩秒 – proPhet

+1

根據嚴格的描述,沒有JavaScript,由於規則#5 http://www.w3.org/TR/CSS2/ visuren.html#float-position – j08691

回答

3

做出的第二個元素浮動權

請參閱Working Fiddle

HTML:

<div class="First"></div> 
<div class="Second"></div> 
<div class="Third"></div> 

CSS:

div 
{ 
    float: left; 
    width: 50%; 
} 

.First 
{ 
    height: 50px; 
    background-color: red; 
} 

.Second 
{  
    height: 90px; 
    background-color: yellow; 
    float: right; 
} 

.Third 
{ 
    height: 50px; 
    background-color: green; 
} 

編輯:如果你有數目不詳的div的, 像這樣HTML(改變大小,只要你想)

<div style="height: 50px;"></div> 
<div style="height: 90px;"></div> 
<div style="height: 70px;"></div> 
<div style="height: 50px;"></div> 
<div style="height: 90px;"></div> 
<div style="height: 70px;"></div> 
<div style="height: 50px;"></div> 
<div style="height: 90px;"></div> 
<div style="height: 70px;"></div> 

只要使用這個CSS

div 
{ 
    width: 48%; 
    margin: 1%; 
    background-color: #09F; 
} 
div:nth-child(odd) 
{ 
    float: left; 
} 
div:nth-child(even) 
{ 
    float: right; 
} 

看看這個Working Fiddle

+0

可以工作,雖然'div'元素正在**動態生成**,這種解決方案也不會工作超過兩列的佈局。謝謝 – proPhet

+0

你錯了,它適用於任何你想要的行數。並與動態內容和高度。看看我更新的答案.. – avrahamcool

+1

**列**花花公子,lol不行,在三個或更多列的佈局中,可以讓每個第三個元素都是正確的,但問題仍然會持續 – proPhet