代码之家  ›  专栏  ›  技术社区  ›  Jay

为什么这些弹性物品没有包装?

  •  2
  • Jay  · 技术社区  · 7 年前

    我有一个flex项目,也是一个flex容器 .sub-con .分包商 即使在添加以下内容后仍拒绝包装: flex-flow: row wrap .

    .container {
      display: flex;
      justify-content: center;
      align-items: center;
      flex-flow: row wrap;
      height: 100vh;
    }
    
    .sub-con {
      margin-right: 50px;
      margin-left: 50px;
      height: 500px;
      background-color: #fff;
      display: flex;
      justify-content: center;
      flex-flow: row wrap;
    }
    
    .col-one {
      height: 100px;
      border: 1px solid lightgreen;
      flex-grow: 2;
    }
    
    .col-two {
      height: 100px;
      border: 1px solid red;
      flex-grow: 1;
    }
    <div class="container">
      <div class="sub-con">
        <div class="col-one"></div>
        <div class="col-two"></div>
      </div>
    </div>
    1 回复  |  直到 6 年前
        1
  •  2
  •   Michael Benjamin    6 年前

    嵌套容器中的flex项大小为

    .col-one{
      width: 40%;
      height: 100px;
      border: 1px solid lightgreen;
    }
    .col-two{
      width: 40%;
      height: 100px;
      border: 1px solid red;
    }
    

    因为百分比长度是基于父对象的长度 没有理由包装 . 它们始终是父对象的40%,即使父对象的宽度为1%。

    px em ,它们将包装。

    jsFiddle demo

     .container {
       display: flex;
       justify-content: center;
       align-items: center;
       flex-flow: row wrap;
       height: 100vh;
     }
     
     .sub-con {
       flex: 1;  /* for demo only */
       align-content: flex-start; /* for demo only */
       margin-right: 50px;
       margin-left: 50px;
       height: 500px;
       background-color: #fff;
       display: flex;
       justify-content: center;
       flex-flow: row wrap;
     }
     
     .col-one {
       width: 200px;
       height: 100px;
       border: 1px solid lightgreen;
     }
     
     .col-two {
       width: 200px;
       height: 100px;
       border: 1px solid red;
     }
    <div class="container">
      <div class="sub-con">
        <div class="col-one"></div>
        <div class="col-two"></div>
      </div>
    </div>