I am trying to style a table (output by code I can't alter) so that the head and foot of the table are always visible and the contents of the data rows will be scrollable.
What is easiest way to do this?
I tried to set the body to the height minus the header + footer but it didn't work.
Here is my code:
.outer, html, body {
height: 100%;
}
table {
border: 1px solid #000;
width: 100%;
height: calc(100% - 20px);
text-align: center;
}
table thead {
height: 100px;
background-color: blue;
}
table tbody {
overflow: scroll;
height: calc(100% - 200px);
}
table tfoot {
height: 100px;
background-color: red;
}
<div class="outer">
<table>
<thead><tr>
<th>col 1</th>
<th>col 2</th>
</tr></thead>
<tbody>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
<tr><td>a</td><td>b</td></tr>
</tbody>
<tfoot>
<tr >
<td colspan=2>footer</td>
</tr>
</tfoot>
</table>
</div>
How do I make table 100% height and the body part stretch to available size and be scrollable?