总结 Flex 布局的最佳实践
有关 Flex 布局的所有细节详见 Notes/Web基础/CSS/flex布局。本篇只涉及 Flex 布局的最佳实践。
子项分组布局
最常见的需求就是实现 PC 端网站顶部的 NavBar。

左边和右边的 item 分为了两组,这个需求使用 flex 布局很容易实现。
假如我们的 NavBar 中有 5 个子项。

<div class="nav">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
</div>
.nav {
  height: 50px;
  padding: 0 10px;
  background: green;
  display: flex;
  gap: 0 10px;
  align-items: center;
  .item {
    width: 30px;
    height: 30px;
    border: 1px solid;
    background: skyblue;
  }
}
想要让 1, 2 子项为一组,3, 4, 5 子项目为一组,只需要将第二个子项的 margin-right 设置为 auto。

.item {
  width: 30px;
  height: 30px;
  border: 1px solid;
  background: skyblue;
  &:nth-child(2) {
    margin-right: auto;
  }
}
同理,如果想让 3 子项目单独又分为一组,那么再把第三个子项目的  margin-right 设置为 auto。
.item {
  width: 30px;
  height: 30px;
  border: 1px solid;
  background: skyblue;
  &:nth-child(2) {
    margin-right: auto;
  }
  &:nth-child(3) {
    margin-right: auto;
  }
}
等高布局
具体效果如下。
 
利用 flex 布局很容易实现这个效果,因为默认情况下 align-items 取值为 stretch,在 flex 容器中的所有项目会默认占满交叉轴方向上的剩余空间。
.container {
  display: flex;
  
  .item {
    flex: 1;
    
    &:nth-child(1) {
      background: green;
    }
    &:nth-child(2) {
      background: skyblue;
    }
    &:nth-child(3) {
      background: orange;
    } 
  }
}