html - CSS flex grow 不适用于顶部添加的 div

标签 html css flexbox flex-grow

考虑以下 fiddle :https://jsfiddle.net/7naxprzd/1/

要求是:

  • 包含标题和内容的两列
  • 列顶部应对齐
  • 列底部应对齐
  • 在每一列的顶部应该有一个水平居中的箭头

如果通过删除类 .arrow-wrapperdiv 来消除箭头,代码将正常工作,但我需要箭头。

一个解决方案可能是绝对定位箭头,但是有没有办法在不绝对定位箭头的情况下使用 flex 解决这个布局问题?

应该适用于现代浏览器和 IE11。

.row-wrapper {
  display: flex;
}

.col-wrapper-outer {
  display: flex;
  flex-wrap: wrap;
}

.arrow-wrapper {
  width: 100%;
  text-align: center;
  font-size: 30px;
}

.col-wrapper {
  width: 100%;
  display: flex;
  flex-direction: column;
  border: 2px solid red;
  color: white;
}

.col-wrapper .header {
  background: blue;
}

.col-wrapper .contents {
  flex: 1 0 auto;
  background: green;
}
<div class="row-wrapper">
  <div class="col-wrapper-outer">
    <div class="arrow-wrapper">
      &darr;
    </div>
    <div class="col-wrapper">
      <div class="header">Please align tops.</div>
      <div class="contents">Let me grow.</div>
    </div>
  </div>
  <div class="col-wrapper-outer">
    <div class="arrow-wrapper">
      &darr;
    </div>
    <div class="col-wrapper">
      <div class="header">please align tops.</div>
      <div class="contents">Let me grow.<br>Please<br>align<br>bottoms.</div>
    </div>
  </div>
</div>

最佳答案

在你的 div 类 col-wrapper-outer 中,而不是这个:

.col-wrapper-outer {
  display: flex;
  flex-wrap: wrap;
}

使用这个:

.col-wrapper-outer {
  display: flex;
  flex-direction: column;
}

然后将 flex: 1 添加到 .col-wrapper 中,使其占据容器的整个高度。

revised fiddle

.row-wrapper {
  display: flex;
}

.col-wrapper-outer {
  display: flex;
  /* flex-wrap: wrap; */
  flex-direction: column;    /* NEW */
}

.arrow-wrapper {
  width: 100%;
  text-align: center;
  font-size: 30px;
}

.col-wrapper {
  flex: 1;                   /* NEW */
  width: 100%;
  display: flex;
  flex-direction: column;
  border: 2px solid red;
  color: white;
}

.col-wrapper .header {
  background: blue;
}

.col-wrapper .contents {
  flex: 1 0 auto;
  background: green;
}
<div class="row-wrapper">
  <div class="col-wrapper-outer">
    <div class="arrow-wrapper">
      &darr;
    </div>
    <div class="col-wrapper">
      <div class="header">Please align tops.</div>
      <div class="contents">Let me grow.</div>
    </div>
  </div>
  <div class="col-wrapper-outer">
    <div class="arrow-wrapper">
      &darr;
    </div>
    <div class="col-wrapper">
      <div class="header">please align tops.</div>
      <div class="contents">Let me grow.
        <br>Please
        <br>align
        <br>bottoms.</div>
    </div>
  </div>
</div>

关于html - CSS flex grow 不适用于顶部添加的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46828871/

相关文章:

html - 一个 div 覆盖另一个 div

html - 内容中带有边框的奇怪行为

html - 如何将元素定位在视口(viewport)左边缘之外?

css - 按主题背景自定义背景封面

html - Flex/Grid 布局不适用于按钮或字段集元素

html - 如何限制 flexbox 布局中最高后代的动态高度?

javascript - 如何阻止chrome缓存

jquery - 使背景适合任何屏幕尺寸

jquery - 丢失 jQuery 灯箱弹出窗口

html - 将 flex 速记与百分比宽度结合起来?