Flexbox在垂直堆叠的盒子上保持相等的高度[重复]

Posted

技术标签:

【中文标题】Flexbox在垂直堆叠的盒子上保持相等的高度[重复]【英文标题】:Flexbox keep equal height on vertically stacked boxes [duplicate] 【发布时间】:2016-07-26 18:13:06 【问题描述】:

我有一堆看起来像大盒子的链接,内容和高度经常变化。使用 flexbox 让它们在每行上具有相同的高度很容易。 我使用 Bootstrap 网格布局,当每个盒子在较小的屏幕尺寸上垂直堆叠(每行一个)时,我无法让 flexbox 在它们上设置相同的高度。 我希望我可以通过将flow-directioncolumn 更改为column 来解决问题,但是没有。

有什么方法可以在不使用 javascript hack 的情况下解决这个问题?

相关父容器css:

display: flex;
flex-direction: row;
flex-flow: row wrap;

子链接(flex)框:

display: flex;

伪代码:

<div class="flex-container>
   <a href="/#" class="box col-lg-3 col-md-4 col-sm-6">
     <h2>Test2</h2>
     <div><img src="/ds"  /></div>
     <div>sadsafmf sløfmkls</div>
   </a>
   <a href="/#" class="box col-lg-3 col-md-4 col-sm-6">
     <h2>Test3</h2>
     <div><img src="/ds"  /></div>
     <div>sadsafmf sløfmkls skldfsd ffsf sdflsdf f sl as ad sad</div>
   </a>
</div>

【问题讨论】:

【参考方案1】:

不...等高仅适用于同一行...所以当元素换行时,它们不再获得等高。如果 flex-direction 是 column 它可以工作,只要有足够的垂直空间让两个元素具有相同的高度(最大的 2*)。如果没有,容器将不会拉伸以容纳相同大小的两个 div。

.container 
  margin-bottom:10px;
  

.col-sm-6 
  border:1px solid grey;
  flex:1;

.fixed 
  height: 250px;

.flex-container 
  display: flex;
  flex-direction: column;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
  <div class="row fixed flex-container">
        <a href="/#" class="box col-lg-3 col-md-4 col-sm-6">
       <h2>Same Height</h2>
       <div>sadsafmf sløfmkls</div>
     </a>
        <a href="/#" class="box col-lg-3 col-md-4 col-sm-6">
       <h2>Same Height</h2>
       <div>sadsafmf sløfmkls skldfsd ffsf sdflsdf f sl as ad sad</div>
     </a>
  </div>
</div>

<div class="container">
  <div class="row flex-container">
        <a href="/#" class="box col-lg-3 col-md-4 col-sm-6">
        <h2>Shorter</h2>
       <div>sadsafmf sløfmkls</div>
     </a>
        <a href="/#" class="box col-lg-3 col-md-4 col-sm-6">
       <h2>Taller</h2>
       <div>sadsafmf sløfmkls skldfsd ffsf sdflsdf f sl as ad sad</div>
     </a>
  </div>
</div>

【讨论】:

【参考方案2】:

只需将align-self:stretch 添加到框元素即可。 孩子上的height: 100% 也可以工作。

【讨论】:

以上是关于Flexbox在垂直堆叠的盒子上保持相等的高度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在相邻的flexbox容器中垂直对齐内容

具有相等高度的弹性盒子内部项目[重复]

如何保持恒定的图像高度?卡在弹性盒子里?

如何使用 flexbox 制作四个基于视口的盒子?

堆叠的 flexbox 垂直居中在 chrome 中不起作用

弹性盒子FlexBox简介