我目前正在将旧页面从使用<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可以调整只有一个容器,并仍然在视觉上看起来一样吗? –