html - flexbox:使用 flex-direction: row 拉伸(stretch)元素的高度

标签 html css flexbox

我想拉伸(stretch)两个 div 元素(.sideline.main-contents)以到达页面底部并与页脚保持一定高度。

这两个 div 嵌套在具有 flex-direction: row 的 div (.row-elements) 中,因为我希望它们位于同一行。

/* body {
      display:flex;
      flex-direction:column;
    } */

.one-above-all {
  display: flex;
  flex-direction: column;
  /*   flex: 1 0 auto; */
  /*   min-height: 1100px; */
  border: solid black 1px;
}
.top-block {
  margin: 0 auto;
  border: solid black 1px;
  width: 300px;
  height: 30px;
  margin-top: -15px;
}
.headline {
  border: solid black 1px;
  width: 90%;
  align-self: flex-end;
  margin-top: 40px;
  margin-right: 10px;
  height: 160px;
  display: flex;
  box-sizing: border-box;
}
.row-elements {
  display: flex;
  flex-direction: row;
  margin-top: 40px;
  align-items: stretch;
  /*   min-height: 900px;
         flex: 1 0 auto;
       */
}
.sideline {
  width: 160px;
  border: solid 1px;
  margin-left: calc(10% - 10px);
  box-sizing: border-box;
  flex-shrink: 1
}
.main-contents {
  border: solid 1px;
  margin-left: 40px;
  /*   align-self: stretch; */
  flex: 1 1 auto;
  margin-right: 10px;
  box-sizing: border-box;
}
.bottom-block {
  align-self: flex-end;
  margin-top: auto;
  border: black solid 1px;
  margin: auto;
  width: 300px;
  height: 30px;
  margin-bottom: -10px;
  /*   margin-top: 880px; */
}
/* .stretch-test {
      border:solid, 1px;
      display: flex;
      flex-direction: column;
      
      flex: 1 0 auto;
    } */
<div class="one-above-all">
  <div class="top-block"></div>
  <div class="headline"></div>
  <!-- <div class="stretch-test"> -->
  <div class="row-elements">
    <div class="sideline"></div>
    <div class="main-contents">jhjkdhfjksdhafjksdahfl</div>
    <!--</div> -->
  </div>
</div>
<div class="bottom-block">footer</div>

Codepen

css中注释掉的代码是我试过的。

我尝试将 body 设置为 flex 并赋予 1 0 auto 的行元素类 flex 属性,但没有用.

我尝试将 row-elements 类(具有 rowflex-direction)嵌套在另一个带有 的 div 中column 的 flex-direction 并将 .row-elements 设置为 flex:1 0 auto 也没有用。

我尝试完全删除行元素类,但两个 div 不会出现在同一行。

任何解决方案将不胜感激。

最佳答案

要将页脚贴在底部,有两种方法:

方法#1:justify-content: space-between

将容器与 flex-direction: column 垂直对齐。然后使用 justify-content: space-between 将最后一个元素固定到底部。

revised codepen

方法#2:自动边距

此外,对于列方向的容器,将 margin-top: auto 应用于页脚,使其与其他 flex 元素隔开。 (看来你已经很熟悉这个方法了。)

这是对两者的详细解释:Methods for Aligning Flex Items

确保为容器定义高度,除非您只需要内容高度。在我的示例中,我在 body 上使用了 height: 100vh

关于html - flexbox:使用 flex-direction: row 拉伸(stretch)元素的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39157035/

相关文章:

html - 卡列不能在 Firefox 中并排工作

javascript - 获取 php 样式表输出并存储为变量

php - 我正在尝试通过 php 在数据库中插入 html 表单数据,但它没有发生

html - 防止调整表大小

css - 是否可以通过样式表进行跨域攻击?

css - 防止在显示 : flex 时出现空白

css - iPad Air 和 iPhone 6+ 上的 flexbox 行 "width 0"

html - 将一个 div 水平对齐到左侧,一个标题对齐到中心,一个 div 水平对齐到右侧

jquery - 使用 Twitter Bootstrap 填充全屏设计

html - 外部字体在 Foundation.Zurb CSS 中不起作用