Display flex
by myrluk3
HTML
<div class="box">
<div class="row header">
<p><b>header</b>
<br />
<br />(sized to content)</p>
</div>
<div class="row content">
<p>
<b>content</b>
(fills remaining space)
</p>
</div>
<div class="row footer">
<p><b>footer</b> (dynamic height)</p>
<button id="addRow">Arr dow</button>
<div id="rowCont">
</div>
</div>
</div>
CSS
html,
body {
height: 100%;
margin: 0
}
.box {
display: flex;
flex-flow: column;
height: 100%;
}
.box .row {
border: 1px dotted grey;
}
.box .row.header {
flex: 0 1 auto;
}
.box .row.content {
flex: 1 1 auto;
}
.box .row.footer {
flex: 0 1 auto;
}
JavaScript
document.querySelector('#addRow').addEventListener('click', function() {
const row = document.createElement('DIV');
row.classList.add('row');
document.querySelector('#rowCont').appendChild(row);
})