【问题标题】:How to get elements within a flexbox to be equalheight (nested) using CSS [duplicate]如何使用 CSS 使 flexbox 中的元素等高(嵌套)[重复]
【发布时间】:2018-07-16 10:14:13
【问题描述】:

我已经搜索过,但无法弄清楚如何使 flexbox 面板中的内容等高。我让面板本身的高度相同,但我也希望面板标题和面板主体的高度也相同。我已经玩了几个小时,希望能偶然找到解决方案。 总之,我想要相等高度的面板(已经得到),面板标题和面板高度相等。

<div class="container">
  <div class="row">
    <div class="flex-equalheight">
      <div class="col-md-3 col-sm-4 col-xs-12 equal">
        <div class="panel panel-yellow bells-shadow" style="text-align: center;">
          <div class="panel-heading">Line 1</div>
      <p class="panel-body panel-statement">understand your company's website goals<br>understand your company's website goals<br>understand your company's website goals</p>
    </div>
  </div>
  <div class="col-md-3 col-sm-4 col-xs-12 equal">
    <div class="panel panel-yellow bells-shadow" style="text-align: center;">
      <div class="panel-heading">Line 1<br>Line 2</div>
      <p class="panel-body panel-statement">benchmark you agains your competition</p>
    </div>
  </div>
</div>

/*  START THE EQUAL HEIGHT FLEX MAGIC */
.flex-equalheight, .equal {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
flex: 1 1 0px;
margin-bottom: 15px;
}
.flex-equalheight .panel {
  min-width:100%;
}

我有一个 codepen 来演示这个问题。为你能给我的任何帮助干杯。

[编辑] 我尝试将以下内容添加到 codepen,但成功有限,它似乎可以工作,但是当您调整浏览器大小时,由于某种原因,内容会溢出 div

.panel {
  display: flex;
  flex-direction:column;
  height:100%;
}
.panel-heading, .panel-body {
  height:100%;
  display:inline-flex;
}

【问题讨论】:

  • 很好 mixin bootstrap v3 我猜 flex 不是一个好主意......只需切换到已经使用 flex 制作的 V4
  • @GibinEalias,是的,我发现了这一点,但是当我将他们的解决方案应用到 h2 和 h3 元素时,它并没有给我想要的结果。
  • dupe链接既有CSS方式也有脚本方式,并说明何时可以/需要使用它们。
  • 原帖更新为:编辑:
  • 开始将height: 100% 与 Flexbox 一起使用,这样不会正常工作。欺骗链接为您提供了 2 个解决方案。可选择固定的最小高度,例如like in this updated codepen,您可能希望使用例如控制min-height 的值媒体查询,因此与文本大小相比,它不会变小或变大。 min-height 还允许它增长并避免height 创建的溢出。

标签: html css twitter-bootstrap-3 flexbox


【解决方案1】:

jquery-match-height怎么样

$(function() {
  $('.panel-heading').matchHeight();
});
body {
  padding: 20px;
}

.panel-yellow {
  border-color: #e2dd43;
}

.panel-yellow>.panel-heading {
  color: #2c399e;
  background-color: #e2dd43;
  border-color: #e2dd43;
}

.panel-heading {
  font-size: 1.2em;
}

.bells-shadow {
  transition-property: color, background-color, box-shadow, transform;
  transition-duration: .55s;
}

.bells-shadow {
  box-shadow: 0 15px 35px rgba(50, 50, 93, .1), 0 5px 15px rgba(0, 0, 0, .07);
}

.bells-shadow:hover {
  transform: translateY(-4px);
  box-shadow: 0 18px 35px rgba(50, 50, 93, .1), 0 8px 15px rgba(0, 0, 0, .07);
}


/*  START THE EQUAL HEIGHT FLEX MAGIC */

.flex-equalheight,
.equal {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  flex: 1 1 0px;
  margin-bottom: 15px;
}

.flex-equalheight .panel {
  min-width: 100%;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.7.2/jquery.matchHeight-min.js"></script>
<div class="container">
  <div class="row">
    <div class="flex-equalheight">
      <div class="col-md-3 col-sm-4 col-xs-12 equal">
        <div class="panel panel-yellow bells-shadow" style="text-align: center;">
          <div class="panel-heading">Line 1</div>
          <p class="panel-body panel-statement">understand your company's website goals<br>understand your company's website goals<br>understand your company's website goals</p>
        </div>
      </div>
      <div class="col-md-3 col-sm-4 col-xs-12 equal">
        <div class="panel panel-yellow bells-shadow" style="text-align: center;">
          <div class="panel-heading">Line 1<br>Line 2</div>
          <p class="panel-body panel-statement">benchmark you agains your competition</p>
        </div>
      </div>
    </div>
  </div>
</div>

检查此Codepen

【讨论】:

  • 为什么要投反对票?
  • 我不知道,不是我。您的回答完全可以接受,因为我没有明确表示我希望解决方案是 CSS。
  • 很快也会发布 CSS 解决方案。
猜你喜欢
  • 2017-02-28
  • 2017-05-24
  • 2021-06-26
  • 2020-11-25
  • 2018-06-04
  • 2017-12-17
  • 2018-05-27
  • 1970-01-01
  • 2018-05-24
相关资源
最近更新 更多