如何在我的 Bootstrap flex 子元素中具有相等的高度?

Posted

技术标签:

【中文标题】如何在我的 Bootstrap flex 子元素中具有相等的高度?【英文标题】:How can I have equal heights in my Bootstrap flex child elements? 【发布时间】:2019-03-06 15:32:27 【问题描述】:

我的理解是新的 Boostrap (v4) 使用 flex 在盒子上显示元素,并且对齐更加灵活。在我的页面中,我有三个高度相同的框,但是白色的内部元素也需要具有相同的高度。

我怎样才能做到这一点?将.tile 设置为height:100% 会导致框过长。

编辑:我想澄清这不是让标记为红色的列等高,这已经使用标准的 Bootstrap 类实现了。是白色的盒子,我需要全高。

Code Pen Link

.col-md-4 
  border: 1px solid red;


.tile 
  background: #fff;


body 
  background: grey


.img-fluid 
  width: 100%;


.padding 
  padding: 0 10px;
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.2/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
  <div class="row row-eq-height three-sections">
    <div class="col-md-4 align-self-stretch tile-outer">
      <div class="tile">
        <a href="#" target="_blank"><img src="https://via.placeholder.com/300x300"  class="img-fluid" /></a>
        <div class="padding">
          <h3>Text block 1</h3>
          <p>Lorem ipsum dolor sit amet, minim molestie argumentum est at, pri legere torquatos instructior ex. Vis id odio atomorum oportere, quem modo fabellas sit at, dicat semper est ne. Apeirian detraxit pri eu. No solum accusam has. Ius ne harum mundi
            clita, eu pro tation audiam.</p>
        </div>
      </div>
    </div>
    <div class="col-md-4 align-self-stretch tile-outer">
      <div class="tile">
        <a href="#" target="_blank"><img src="https://via.placeholder.com/300x300"  class="img-fluid" /></a>
        <div class="padding">
          <h3>Some random text here</h3>
          <p>Lorem ipsum dolor sit amet, minim molestie argumentum est at, pri legere torquatos instructior ex. </p>
        </div>
      </div>
    </div>
    <div class="col-md-4 align-self-stretch tile-outer">
      <div class="tile">
        <a href="#" target="_blank"><img src="https://via.placeholder.com/300x300"  class="img-fluid" /></a>
        <div class="padding">
          <h3>Another random line</h3>
          <p>Lorem ipsum dolor sit amet, minim molestie argumentum est at, pri legere torquatos instructior ex. Vis id odio atomorum oportere, quem modo fabellas sit at, dicat semper est ne. Apeirian detraxit pri eu. No solum accusam has.</p>
        </div>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

我不确定你的意思是将.tile 高度设置为 100% 会导致它们太长。听起来这就是你想要的,但也许我误解了你想要的结果? 【参考方案1】:

只需将display: flex 添加到col-md-4 容器中。这将自动将align-self: stretch 应用于子元素。 revised demo

【讨论】:

【参考方案2】:

这个也可以解决

.tile 
 background: #fff;
 height: 100%:

【讨论】:

以上是关于如何在我的 Bootstrap flex 子元素中具有相等的高度?的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap:在元素之间分配空格

(flex mobile)如何在我的自定义布局中添加元素

如何将 Angular Flex Layout 与 Bootstrap 4 网格系统进行比较?

BootStrap

Bootstrap系列之Flex布局

只是不能让 flex 使用 bootstrap 或 vanilla flexbox 垂直居中元素