我目前正在將舊頁面從使用<table>
佈局轉換而來,並試圖使用flexbox實現該行爲。目標是有3列,前兩列以水平和垂直居中,最後一列包含大量文字,顯示正常。CSS flexbox:將3列轉換爲2 + 1
我試圖用一個媒體查詢包裹下的前兩個第三列,當瀏覽器的寬度很小如下:
下面的代碼片段實現了正確的佈局,但會顯失敗的小寬度,只是生產單柱:
我猜,這需要flex-wrap
不知何故?
對於單個容器行,多行也可行嗎?或者每行最好有一個容器?
.row {
display: flex;
justify-content: center;
padding: 5px;
margin: 2px;
border: 1px solid #000;
font-size: 0.7em;
}
.col1, .col2, .col3 {
background-color: #999;
padding: 8px;
margin: 2px;
}
.col1, .col2 {
flex: 1;
/* Horizontal centring */
text-align: center;
/* Add vertical centring */
display: flex;
flex-direction: column;
justify-content:center;
}
.col3 {
flex: 3;
background-color:#fff;
}
@media(max-width: 400px){
.row {display: block;}
}
<div class="row">
<div class="col1">
Column 1
</div>
<div class="col2">
Column 2
</div>
<div class="col3">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse suscipit tortor vel orci pulvinar, eu euismod sem maximus. Mauris tempus sem eget massa tristique, ut maximus tortor volutpat. In efficitur.
</div>
</div>
<div class="row">
<div class="col1">
Column 1
</div>
<div class="col2">
Column 2
</div>
<div class="col3">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse suscipit tortor vel orci pulvinar, eu euismod sem maximus. Mauris tempus sem eget massa tristique, ut maximus tortor volutpat. In efficitur.
</div>
</div>
行之有效,謝謝。它也可以適應只有一個「.row」,或者我總是每行需要一個? –
@MartinEvans - 我不明白你的問題。你的意思是一列嗎? – allnodcoms
我有大約20行,每行3列,目前每個都有一個'.row'。我想知道如果flexbox可以調整隻有一個容器,並仍然在視覺上看起來一樣嗎? –