我想基於Flexbox將創建一個網格佈局:Flexbox的網格:細胞不會增長
.container {
width: 360px; /* Try to change this. Possible values: 240px, 360px, 480px.*/
background: #eee;
display: flex;
flex-flow: row wrap;
margin: 0 -10px;
}
.cell {
box-sizing: border-box;
padding: 10px;
flex: 0 0 120px;
max-width: 120px;
}
.cell.wide {
flex: 1 0 120px;
max-width: 240px;
}
.inner {
background: red;
height: 100px;
color: #fff;
padding: 10px;
box-sizing: border-box;
}
.wide .inner {
background: blue;
}
<div class="container">
<div class="cell">
<div class="inner">1</div>
</div>
<div class="cell wide">
<div class="inner">2</div>
</div>
<div class="cell">
<div class="inner">3</div>
</div>
<div class="cell">
<div class="inner">4</div>
</div>
<div class="cell wide">
<div class="inner">5</div>
</div>
<div class="cell">
<div class="inner">6</div>
</div>
<div class="cell wide">
<div class="inner">7</div>
</div>
<div class="cell">
<div class="inner">8</div>
</div>
<div class="cell">
<div class="inner">9</div>
</div>
<div class="cell">
<div class="inner">10</div>
</div>
<div class="cell">
<div class="inner">11</div>
</div>
<div class="cell wide">
<div class="inner">12</div>
</div>
<div class="cell">
<div class="inner">13</div>
</div>
</div>
This JSFiddle有助於說明我的問題。
容器元素.container
可以包含任意數量的單元格.cell
。有兩種類型的單元格:固定寬度的常規單元格(jsfiddle中的紅色單元格)和寬度較大的單元格(藍色單元格),寬度是其寬度的兩倍,但可以縮小到普通單元格的寬度(如果存在)當前行中沒有足夠的空間。每行必須完全填充。
所以在實施例(見小提琴):
- 細胞#2應寬和推#3到下一行。
- 在第二行中,其然後包含#3,#4和#5,細胞#5應保持小,因爲沒有空間用於較大的細胞和行應該被完全填充。
- 等
順便說:網格容器是可變的寬度,並且因此行可以兩個和四個小區之間包含。您可以通過將寬度更改爲指定的可能值來在小提琴中嘗試此操作。
在撥弄試圖圍繞整個上午和嘗試flex
,width
,min-width
和max-width
性能我絕對需要你幫助的衆多組合後!提前致謝!
我已經有一個Javascript解決方法(計算列和添加類),但會更喜歡一個純CSS的解決方案。
Flexbox不是一個不打算複製一個的網格系統。用傳統的佈局方法可能會更好。 –
這可能更接近你尋找的東西http://codepen.io/gc-nomade/pen/bErgwr(flex只用於增長,這個時候,恕我直言,這是唯一可以通過大多數瀏覽器工作的值) –
@ GCyrillus你是對的,非常接近。事實上,我今天早上已經偶然發現了這個解決方案。 – mattbjom