首页 > 解决方案 > 如何使其父项的弹性项目高度?

问题描述

我有一个简单的导航类型布局,使用 flex 来水平间隔不同宽度的项目。这些项目之间有线条,但它们的高度不同,因为内容的高度不同

如何使项目成为父项的高度,以便所有分隔线都位于父项的顶部。

https://codepen.io/anon/pen/zbEMVd

* {
  font-family: sans-serif;
}

.wrap {
  border: 1px solid grey;
  display: flex;
  padding: 5px;
  justify-content: space-between;
  max-width: 1200px;
}

.item:not(:last-of-type) {
  border-right: 2px solid red;
}

.item-1 {
  width: 150px;
}

.item-2 {
  width: 50px;
}

.item-3 {
  width: 50px;
}

.item-4 {
  width: 50px;
}

.item-5 {
  flex: 1;
}

.item-6 {
  width: 50px;
}
<div class="wrap">
  <div class="item item-1">One</div>
  <div class="item item-2">Two Two Two Two Two </div>
  <div class="item item-3">Three Three Three</div>
  <div class="item item-4">Four</div>
  <div class="item item-5">Five</div>
  <div class="item item-6">Six</div>
</div>

标签: htmlcssflexboxalignment

解决方案


使item元素成为反向列 flexbox(并align-self: flex-end从中删除)以获得效果 - 请参见下面的演示:

* {
  font-family: sans-serif;
}

.wrap {
  border: 1px solid grey;
  display: flex;
  padding: 5px;
  justify-content: space-between;
  max-width: 1200px;
}

.item {
  /* align-self: flex-end; */
  display: flex; /* ADDED */
  flex-direction: column-reverse; /* ADDED */
  background: #ddd;
}
.item:not(:last-of-type) {
  border-right: 2px solid red;
}

.item-1 {
  width: 150px;
}

.item-2 {
  width: 50px;
}

.item-3 {
  width: 50px;
}

.item-4 {
  width: 50px;
}

.item-5 {
  flex: 1;
}

.item-6 {
  width: 50px;
}
<div class="wrap">
  <div class="item item-1">One</div>
  <div class="item item-2">Two Two Two Two Two  </div>
  <div class="item item-3">Three Three Three</div>
  <div class="item item-4">Four</div>
  <div class="item item-5">Five</div>
  <div class="item item-6">Six</div>
</div>


推荐阅读