保持儿童div的高度不变

时间:2016-09-25 13:09:12

标签: javascript html css css3 flexbox

我希望保持两个孩子的身高,abcdef不变,每个孩子的身高都是其父亲{1}}的一半。我能够在CSS中使用xyz执行此操作,但在每个子div flexabc中,我都有动态添加行的表。这会导致div defabc展开以容纳行。

我希望在添加太多行时,每个都可以滚动。

我尝试了很多解决方案,但似乎都没有。

这是我的代码:



def

#xyz {
  flex: 1 1 auto;
  display: flex;
  flex-flow: column;
}
#abc {
  width: 100%;
  flex: 1;
}
#def {
  width: 100%;
  flex: 1;
}




提前致谢。

2 个答案:

答案 0 :(得分:2)

如果您使用flexbox来获取溢出,则应将flexbox子项的内容包装到absolute定位的contanier中,以便它可以在溢出时滚动。

以下是我在代码中更改内容的摘要:

  1. 要演示溢出,请为xyz容器设置特定高度。您可以根据自己的要求更改此高度。

  2. position: relativeoverflow-y: auto添加到flexbox儿童 - abcdef

  3. abcdef的内容整理到一个绝对定位的框中:

    .flex-inner {
      position: absolute;
      height: 100%;
      width: 100%;
      top: 0;
      left: 0;
    }
    
  4. 在方框中添加了一些边框和表格以供说明。

  5. 
    
    * {
      box-sizing: border-box;
    }
    #xyz {
      flex: 1 1 auto;
      display: flex;
      flex-flow: column;
      height: 250px;
      border: 1px solid;
    }
    #abc {
      width: 100%;
      flex: 1;
      border: 1px solid;
      position: relative;
      overflow-y: auto;
    }
    #def {
      width: 100%;
      flex: 1;
      border: 1px solid;
      position: relative;
      overflow-y: auto;
    }
    .flex-inner {
      position: absolute;
      height: 100%;
      width: 100%;
      top: 0;
      left: 0;
    }
    table {
      border-collapse: collapse;
      width: 100%;
    }
    table td {
      border: 1px solid red;
    }
    
    <div id="xyz" class="row">
      <div id="abc" class="col-border-bottom container-fluid">
        <div class="flex-inner">
          <h2>ABC details</h2>
          <table id="abc-table">
            <tr>
              <td colspan="2">Title</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
          </table>
        </div>
      </div>
      <div id="def" class="container-fluid">
        <div class="flex-inner">
          <h2>DEF details</h2>
          <table id="def-table">
            <tr>
              <td colspan="2">Title</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
            <tr>
              <td>row</td>
              <td>row</td>
            </tr>
          </table>
        </div>
      </div>
    </div>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:1)

给孩子divs&溢出:滚动&#39;和&#39;身高:[某事]&#39;。