[英]Set two flex items side by side in a flexbox column
我有一些元素在顯示中以列方向display: flex
容器。
這會將容器放入堆疊視圖中。
假設我有 5 個堆疊元素,我需要讓其中兩個顯示內聯或彎曲方向行。
無需將有問題的兩個元素放入另一個 div中,我可以將 flex 方向行應用於...
是否有可能讓這些元素並排放置?
.flex-column { display: flex; flex-direction: column; } .flex-column .column-item:nth-of-type(4), .flex-column .column-item:nth-of-type(5) { width: calc(50% - 10px); display: inline-block; float: left; } .flex-column .column-item:nth-of-type(4) { margin-right: 20px; }
<div class="flex-column"> <div class="column-item">a</div> <div class="column-item">b</div> <div class="column-item">c</div> <div class="column-item">d</div> <div class="column-item">e</div> </div>
一旦你給你的父母flex-direction:column;
我認為這是不可能的。 屬性,或者您可以啟用flex-wrap:wrap
並使用flex-basis
屬性控制元素的寬度。 這可以讓你在不改變你的html結構的情況下達到你想要的效果。
.flex-column { display: flex; flex-wrap:wrap; } .flex-column .column-item { flex-basis:100%;} .flex-column .column-item:nth-of-type(4), .flex-column .column-item:nth-of-type(5) { flex-basis:50%; }
<div class="flex-column"> <div class="column-item">a</div> <div class="column-item">b</div> <div class="column-item">c</div> <div class="column-item">d</div> <div class="column-item">e</div> </div>
使用 flexbox 的布局相當簡單。 您不需要flex-direction: column
。
只需使用flex-direction: row
和flex-wrap: wrap
。
然后使每個元素足夠長以占據一整行。
減少要共享一行的元素的flex-basis
。
.flex-column { display: flex; flex-wrap: wrap; } .column-item { flex: 1 0 61%; /* flex-grow, flex-shrink, flex-basis */ margin: 2px; background-color: lightgreen; } .column-item:nth-of-type(4), .column-item:nth-of-type(5) { flex-basis: 40%; }
<div class="flex-column"> <div class="column-item">a</div> <div class="column-item">b</div> <div class="column-item">c</div> <div class="column-item">d</div> <div class="column-item">e</div> </div>
在flex
簡寫中定義flex-grow: 1
后,就不需要使用calc()
了。
由於flex-grow
會消耗行上的空閑空間,因此flex-basis
只需要足夠大就可以強制執行換行。 在這種情況下,使用flex-basis: 61%
,邊距有足夠的空間,但沒有足夠的空間容納第二個項目。
使用 CSS Grid 有一個更簡單、更高效的解決方案:
.flex-column { display: grid; grid-template-columns: 1fr 1fr; grid-gap: 5px; } .column-item:nth-of-type(-n + 3) { grid-column: span 2; } .column-item { background-color: lightgreen; }
<div class="flex-column"> <div class="column-item">a</div> <div class="column-item">b</div> <div class="column-item">c</div> <div class="column-item">d</div> <div class="column-item">e</div> </div>
嘗試使用flex-wrap: wrap
,它屬性在 flexbox 中啟用多行
.flex-column { display: flex; flex-wrap:wrap; } .column-item { }
<div class="flex-column"> <div class="column-item">a</div> <div class="column-item">b</div> <div class="column-item">c</div> <div class="column-item">d</div> <div class="column-item">e</div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.