html - 使用 flexbox 对齐元素中心的拉伸(stretch)高度

标签 html css flexbox

我有一个带有 display: flex; 的 div flex 方向:行;。除非我指定 align-items: center,否则此 div 的子元素占据全高。下面的代码 -

.row {
  display: flex;
  flex-direction: row;
  width: 100%;
  height: 100px;
  background: beige;
  border: 1px solid red;
  margin: 10px 0;
}

.row2 {
  align-items: center;
}

.row-item {
  border: 1px solid green;
}

.item1,
.item3 {
  width: 100px;
}

.item2 {
  flex: 1;
}
<div class="row row1">
  <div class="row-item item1">1</div>
  <div class="row-item item2">
    <div> 2.1 </div>
    <div> 2.2 </div>
  </div>
  <div class="row-item item3">3</div>
</div>

<div class="row row2">
  <div class="row-item item1">1</div>
  <div class="row-item item2">
    <div> 2.1 </div>
    <div> 2.2 </div>
  </div>
  <div class="row-item item3">3</div>
</div>

JSFiddle

我想要实现的是 2.1 和 2.2 应该采用 50px (50%) 高度并且应该使其内容垂直居中对齐。他们还应该水平拉伸(stretch)全部可用空间(例如 width: auto 或 100%)。然后,如果 2.1 不存在,则 2.2 的高度应为 100px,并且应垂直居中对齐。

最佳答案

您需要将行元素设为 flexbox 并对其应用 align-items: center;

这是你应该添加的代码

.row1 .row-item {
  display: flex;
  align-items: center;
}

查看下面的结果:

.row {
  display: flex;
  flex-direction: row;
  width: 100%;
  height: 100px;
  background: beige;
  border: 1px solid red;
  margin: 10px 0;
}

.row2 {
  align-items: center;
}

.row-item {
  border: 1px solid green;
}

.row1 .row-item {
  display: flex;
  flex-wrap: wrap;
}

.row1 .row-item div {
  width: 100%;
  border: 1px solid blue;
  display: flex;
  align-items: center;
}

.item1,
.item3 {
  width: 100px;
}

.item2 {
  flex: 1;
}
<div class="row row1">
  <div class="row-item item1">1</div>
  <div class="row-item item2">
    <div> 2.1 </div>
    <div> 2.2 </div>
  </div>
  <div class="row-item item3">3</div>
</div>

<div class="row row2">
  <div class="row-item item1">1</div>
  <div class="row-item item2">
    <div> 2.1 </div>
    <div> 2.2 </div>
  </div>
  <div class="row-item item3">3</div>
</div>

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

相关文章:

jquery - 在表单元素外部使用表单选择器

javascript - 如何调整 Bootstrap 表单字段的工具提示的 z-index?

css - 没有 base64 编码的手写笔内联 SVG 数据 uri

html - 在 flexbox 中将图像缩放到最大尺寸

html - flex 基础示例 : content

html - 为什么 flex 元素不缩小过去的内容大小?

html - 段落元素中的无序列表

javascript - 为什么我的 react-router 链接会把我带到页面中间?

javascript - 使 div 可点击和可复制?

javascript - Select2 按选项值自动完成