2016-09-25 8 views
2

私は2つの子divの高さを一定に保ちたいと考えています。abcdefはそれぞれ親の身長の半分であるxyzです。 CSSでflexを使用してこれを行うことができましたが、子div abcdefのそれぞれに、行が動的に追加されたテーブルがあります。これにより、abcdefの各ディビジョンが展開され、行に対応します。子どもの身長を一定に保ちます

あまりにも多くの行が追加されると、これらのそれぞれがスクロール可能になりたいと思います。

私は多くのソリューションを試しましたが、どれもうまくいかないようです。事前に

#xyz { 
 
    flex: 1 1 auto; 
 
    display: flex; 
 
    flex-flow: column; 
 
} 
 
#abc { 
 
    width: 100%; 
 
    flex: 1; 
 
} 
 
#def { 
 
    width: 100%; 
 
    flex: 1; 
 
}
<div id="xyz" class="row"> 
 
    <div id="abc" class="col-border-bottom container-fluid"> 
 
    <h2>ABC details</h2> 
 
    <table id="abc-table"></table> 
 
    </div> 
 
    <div id="def" class="container-fluid"> 
 
    <h2>DEF details</h2> 
 
    <table id="def-table"></table> 
 
    </div> 
 
</div>

ありがとう:

は、ここに私のコードです。

+0

たぶん最大の高さを使用していますか? – Eran

+0

私が正しく理解していれば、#abcと#defを**一定の高さで保持したいので、#xyzの高さ/最大高さまたは#abc、#defの高さ/最大高さ、 #abcと#defが小さすぎるため、テーブル内で見やすい行を見ることができないため、実際には意味がありません。 – Daniel

+0

本当に達成したいことはありますか? – Daniel

答えて

2

オーバフローを得るためにflexboxを使用している場合は、オーバフロー時にスクロールできるように、flexboxの子供のコンテンツをabsoluteに配置してください。だからここ

は、私はあなたのコードに変更した内容の要約です:

  1. オーバーフローを実証するために、xyzコンテナのための特定の高さを設定します。この高さは要件に応じて変更できます。

  2. フレックスボックスの子供にposition: relativeoverflow-y: autoを追加しました。abcdefです。

  3. 絶対配置ボックスにabcdefの内容をラップ:

    .flex-inner { 
        position: absolute; 
        height: 100%; 
        width: 100%; 
        top: 0; 
        left: 0; 
    } 
    
  4. は、例示のためにボックスにいくつかの境界とテーブルを追加しました。

* { 
 
    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>

+0

しかし、この場合、あなたは静的な高さを#xyzに宣言しています。これは望ましくないかもしれませんが、宣言しても意味がありません! – Daniel

+0

ビューポートの高ささえ必要な場合は動的にすることができます...OPは子どもが 'xyz'の高さの半分を持つようにしたい:) – kukkuz

+0

申し訳ありませんが、私は明示的ではありません。**静的な高さ**については、**は#xyzに**定義された高さについてです!例えば、OPは#xyzの高さを最も背の高い子供の2倍にしたいと思っていて、子供のそれぞれが#xyzの半分の高さを持っています!それ以外の場合は、私はディスプレイを使用する理由が表示されません:フレックス! – Daniel

1

divsに 'overflow:scroll'と 'height:[something]'を与えます。

関連する問題