Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

height: 100% for <div> inside <div> with display: table-cell

Here is 2 column markup using display: table and display: table-cell CSS declarations:

.table {    display: table;  }    .cell {    border: 2px solid black;    vertical-align: top;    display: table-cell;  }    .container {    height: 100%;    border: 2px solid green;  }
<div class="table">    <div class="cell">      <p>Text        <p>Text          <p>Text            <p>Text              <p>Text                <p>Text                  <p>Text                    <p>Text    </div>    <div class="cell">      <div class="container">Text</div>    </div>  </div>

But .container block does not fill parent cell vertically. Here is an example on JsFiddle: http://jsfiddle.net/MGRdP/2.

What I have | What I need

What I haveWhat I need

Please, do not propose JS solution.

like image 244
Paul Annekov Avatar asked Mar 06 '14 09:03

Paul Annekov


People also ask

How do I make my Div take 100% height of parent DIV?

container div has two parent elements: the <body> and the <html> element. And we all know that the default value of the height property is auto , so if we also set the height of <body> and <html> elements to 100%, the resulting height of the container div becomes equal the 100% height of the browser window.

How do you make a cell fixed height in a table?

The height of rows 'tr' in a table can be fixed very easily. This can be done by adding the height attribute in the tr tag. If the height is not specified, the height of the row changes according to the content. The height can be specified either in pixels, or percentage.


1 Answers

When you use % for setting heights or widths, always set the widths/heights of parent elements as well:

.table {      display: table;      height: 100%;  }    .cell {      border: 2px solid black;      vertical-align: top;      display: table-cell;      height: 100%;  }    .container {      height: 100%;      border: 2px solid green;      -moz-box-sizing: border-box;  }
<div class="table">      <div class="cell">          <p>Text          <p>Text          <p>Text          <p>Text          <p>Text          <p>Text          <p>Text          <p>Text      </div>      <div class="cell">          <div class="container">Text</div>      </div>  </div>
like image 68
anurupr Avatar answered Oct 26 '22 09:10

anurupr