父盒子flex为1,父盒子下直接有五个子盒子,子盒子高度用flex布局实现第一行两个子盒子,第二行三个子盒子,子盒子高度为父盒子的一半,第一行子盒子margin-bottom 为15
时间: 2024-03-01 20:54:55 浏览: 145
这个布局可以这样实现:
```html
<div class="container">
<div class="row">
<div class="item"></div>
<div class="item"></div>
</div>
<div class="row">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
```
```css
.container {
display: flex;
flex-direction: column;
height: 400px;
}
.row {
display: flex;
justify-content: space-between;
height: 50%;
}
.item {
flex-basis: calc(40% - 7.5px); /* 40% = 100% / 2.5, 2.5 是一行的子盒子数量,7.5px 是两个子盒子的间距 */
height: 100%;
margin-bottom: 15px;
}
.item:last-child {
margin-bottom: 0;
}
```
解释一下:
- 父盒子 `.container` 设置了 `display: flex;` 和 `flex-direction: column;`,表示它是一个纵向的 flex 容器,子元素按照垂直方向排列。
- 子盒子 `.row` 也是一个 flex 容器,但是它是横向排列的,用 `justify-content: space-between;` 实现子元素之间的间距。
- 子盒子 `.item` 设置了 `flex-basis: calc(40% - 7.5px);`,表示它的初始尺寸为父盒子宽度的 40%,减去两个子盒子之间的间距 7.5px。这样就可以实现一行两个或三个子盒子的排列。而高度则设置为 `height: 50%;`,表示它的高度为父盒子高度的一半。
- 最后一个子盒子的 `margin-bottom` 需要去掉,可以使用 `:last-child` 选择器来实现。
阅读全文