首页  >  问答  >  正文

使用指定间隔对行中的flex项目进行对齐

我有两个包含<div>的行,每行都有display: flex;,每个行中都包含几个子<div>项目。在下面的示例中,您可以看到在第一行中有2个项目(绿色的盒子标记为“item”),它们的比例为6/3。在第二行中有4个项目,它们的比例为2/2/2/3

现在,我希望每行中的最后一个项目(具有flex: 3;)能够完美对齐,除非我添加一个gap: X px;


我如何在计算中包含这个gap,以便具有相同宽度的项目根据它们的flex属性对齐? 或者在下面的代码片段中以图形方式简化:我如何对齐红色边框?

.flex {
  height: 50px;
  display: flex;
  gap: 20px; // <- 破坏我的布局的罪魁祸首
}

.item {
  background-color: green;
  outline: 1px solid black;
  display: flex;
  justify-content: center;
  align-items: center;
}

.item-2 {
  flex: 2;
}

.item-3 {
  flex: 3;
}

.item-6 {
  flex: 6;
}
<div>
  <div class="flex">
    <div class="item item-6" style="border-right: 2px solid red;">item</div>
    <div class="item item-3">item</div>
  </div>
  <div class="flex">
    <div class="item item-2">item</div>
    <div class="item item-2">item</div>
    <div class="item item-2" style="border-right: 2px solid red;">item</div>
    <div class="item item-3">item</div>
  </div>
</div>

P粉354948724P粉354948724397 天前588

全部回复(1)我来回复

  • P粉154798196

    P粉1547981962023-09-18 15:15:17

    多种可能的解决方案之一是在另一个弹性div中包裹一些项目。
    请参见下面的代码,其中包含类flex-item

    <div>
      <div class="flex">
        <div class="item item-6" style="border-right: 2px solid red;">item</div>
        <div class="item item-3">item</div>
      </div>
      <div class="flex">
        <div class="flex-item item-6 white">
          <div class="item item-2">item</div>
          <div class="item item-2">item</div>
          <div class="item item-2" style="border-right: 2px solid red;">item</div>
        </div>
        <div class="item item-3">item</div>
      </div>
    </div>
    
    .flex {
      height: 50px;
      display: flex;
      gap: 20px; // <- 破坏我的布局的罪魁祸首
    }
    
    .item {
      background-color: green;
      outline: 1px solid black;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
    .item-2 {
      flex: 2;
    }
    
    .item-3 {
      flex: 3;
    }
    
    .item-6 {
      flex: 6;
    }
    
    .flex-item {
      display: flex;
      gap: 20px;
      justify-content: center;
    }
    

    回复
    0
  • 取消回复