代码之家  ›  专栏  ›  技术社区  ›  Max Millington

防止flexchild生长[复制]

  •  1
  • Max Millington  · 技术社区  · 6 年前

    给出以下代码:

    .outer-container {
      display: flex;
      justify-content: space-evenly;
    }
    
    .left-container {
      height: 300px;
    }
    
    .right-container {
      flex: 0 1 auto;
    }
    <div class='outer-container'>
      <div class='left-container'>Lefto</div>
      <div class='right-container'>Righto</div>
    </div>

    尽管 flex-grow 属性设置为0。我如何防止这种情况发生?也就是说,我希望合适的容器只有其内容物那么高。

    Codepen: https://codepen.io/MaxMillington2/pen/PxOwxo

    1 回复  |  直到 6 年前
        1
  •  1
  •   ksav    6 年前

    添加 align-self: flex-start .right-container

    .outer-container {
      display: flex;
      justify-content: space-evenly;
    }
    
    .left-container {
      height: 300px;
      border: 1px solid blue;
    }
    
    .right-container {
      align-self: flex-start;
      border: 1px solid red;
    }
    <div class='outer-container'>
      <div class='left-container'>Lefto</div>
      <div class='right-container'>Righto</div>
    </div>

    注: flex-grow ,请 flex-shrink flex-basis 用于控制空间沿 主轴 . 在这种情况下,主轴是左-右的,因为 flex-direction 设置为 row 默认情况下。

    这个 align-items 属性将在横轴上对齐项目。此属性的初始值为 stretch 这就是为什么默认情况下,弹性项目会延伸到最高项目的高度。

    MDN - Concepts of Flexbox

    这就是为什么你需要重写 对齐项目 对你 .outer-container align-self 给灵活的孩子们。