2016-08-10 688 views
2

我想要兩個,三個或更多的div水平排列,然後每個寬度將填充所有可用空間。例如對於兩個div,它們將分別佔用一半的空間,三個div將佔用1/3的空間,等等。如何讓多個div以相同的寬度水平排列?

我試過使用display inline-block,並且可以得到div並排排列,但是如何讓它們填充父容器的可用寬度?

編輯:最好不顯示彎曲法(我不知道,如果它與IE11完全兼容)

.container{ 
 
    border: solid 1px green; 
 
    height: 50px; 
 
    box-sizing: border-box; 
 

 

 
} 
 
.button{ 
 
    display:inline-block; 
 
    border: solid 1px black; 
 
    height: 20px; 
 
}
<div class="container"> 
 
<div class="button "> 
 
div1 
 
</div> 
 
<div class="button "> 
 
div2 
 
</div> 
 
<div class="button "> 
 
div3 
 
</div> 
 
</div>

+0

你知道引導? – JazZ

+2

http://stackoverflow.com/questions/35325371/how-can-i-let-a-div-fill-100-width-if-no-other-elements-are-beside-it/35325430#35325430 –

+0

FYI ,SO現在有自己的片段機制。您可以通過編輯窗口上方的圖標來查看它,該窗口看起來像一個帶有「<>」的文檔。 – zwol

回答

3

您可以在容器中使用display: table,在按鈕上使用display: table-cell

.container{ 
 
    border: solid 1px green; 
 
    height: 50px; 
 
    box-sizing: border-box; 
 
display: table; 
 
width: 100%; 
 

 
} 
 
.button{ 
 
    display: table-cell; 
 
    border: solid 1px black; 
 
    height: 20px; 
 
}
<div class="container"> 
 
<div class="button "> 
 
div1 
 
</div> 
 
<div class="button "> 
 
div2 
 
</div> 
 
<div class="button "> 
 
div3 
 
</div> 
 
</div>

+0

這是最好的非flexbox解決方案。 –

4

這是瑣碎flexbox佈局:

.container{ 
 
    border: solid 1px green; 
 
    height: 50px; 
 
    box-sizing: border-box; 
 
    display: flex; 
 
} 
 
.button{ 
 
    display:inline-block; 
 
    border: solid 1px black; 
 
    height: 20px; 
 
    flex: 1; 
 
}
<div class="container"> 
 
<div class="button "> 
 
div1 
 
</div> 
 
<div class="button "> 
 
div2 
 
</div> 
 
<div class="button "> 
 
div3 
 
</div> 
 
</div>

我所做的只是分別將display:flexflex:1屬性分別添加到containerbutton

Flexbox is very widely supported nowadays,但如果您關心IE(包括版本11)或較舊版本的Android,則可能需要避免它。不幸的是,沒有 flexbox,你想要做什麼更困難。我會讓其他人寫一個非flexbox答案。

+0

謝謝,我擔心IE11會因爲我發現很多鏈接在網上說它的越野車而嘔吐。 – sjs

+0

@sjs如果你設法避免[列在這裏]的所有錯誤(https://github.com/philipwalton/flexbugs),Flexbox在IE11中看起來不錯。 –

+0

請記住,在* flex格式的上下文中*,flex兒童的'display'屬性被忽略/覆蓋。像在代碼中一樣使用'display:inline-block'沒有意義。 –

相關問題