Its a very simple problem but I can\'t seem to find a suitable solution online. I want to have a list of elements in natural flow with the last element extended to the botto
Set the height of html, body
to 100%
. Then, you can set the last <div>
's height to 100%
and it will be as tall as the window. Since you probably don't want scrolling, you can set overflow: hidden
on the html, body
as well.
http://jsfiddle.net/GKbzx/
html, body {
height: 100%;
width: 100%;
}
body {
display: table;
margin: 0;
}
#top, #bottom {
width: 100%;
background: yellow;
display: table-row;
}
#top {
height: 50px;
}
#bottom {
background: lightgrey;
height: 100%;
}
html, body {
height: 100%;
width: 100%;
}
body {
display: table;
margin: 0;
}
#top, #bottom {
width: 100%;
background: yellow;
display: table-row;
}
#top {
height: 50px;
}
#bottom {
background: lightgrey;
height: 100%;
}
<div id="top" style="height:50px;"><span>A header</span></div>
<div id="bottom" style="background:lightgrey;"><span>The content area - extends to the bottom of the page</span></div>
Codepen #1 (little content)
Codepen #2 (lots of content)
#top {
height: 50px;
background: yellow;
}
#bottom {
background: lightgrey;
min-height: calc(100vh - 50px);
}
body {
margin: 0;
}
#top {
height: 50px;
background: yellow;
}
#bottom {
background: lightgrey;
min-height: calc(100vh - 50px);
}
Where `min-height: calc(100vh - 50px);` means:
'Let the height of the content div be **at least** 100% of the viewport height minus the 50px height of the header.'
<div id="top" style="height:50px;"><span>A header</span></div>
<div id="bottom" style="background:lightgrey;"><span>The content area - extends to the bottom of the page</span></div>
Codepen #1 (little content)
Codepen #2 (lots of content)
body {
margin: 0;
min-height: 100vh;
}
body {
display: flex;
flex-direction: column;
}
#top {
height: 50px;
background: yellow;
}
#bottom {
background: lightgrey;
flex: 1;
}
body {
margin: 0;
min-height: 100vh;
}
body {
display: flex;
flex-direction: column;
}
#top {
height: 50px;
background: yellow;
}
#bottom {
background: lightgrey;
flex: 1;
}
<div id="top" style="height:50px;"><span>A header</span></div>
<div id="bottom" style="background:lightgrey;"><span>The content area - extends to the bottom of the page</span></div>
Codepen #1 - little content
Codepen #2 - lots of content