How can an html element fill out 100% of the remaining screen height, using css only?
forget all the answers, this line of CSS worked for me in 2 seconds :
height:100vh;
1vh
= 1% of browser screen height
source
For responsive layout scaling, you might want to use :
min-height: 100vh
[update november 2018] As mentionned in the comments, using the min-height might avoid having issues on reponsive designs
[update april 2018] As mentioned in the comments, back in 2011 when the question was asked, not all browsers supported the viewport units.
The other answers were the solutions back then -- vmax
is still not supported in IE, so this might not be the best solution for all yet.
The trick to this is specifying 100% height on the html and body elements. Some browsers look to the parent elements (html, body) to calculate the height.
<html>
<body>
<div id="Header">
</div>
<div id="Content">
</div>
</body>
</html>
html, body
{
height: 100%;
}
#Header
{
width: 960px;
height: 150px;
}
#Content
{
height: 100%;
width: 960px;
}
Actually the best approach is this:
html {
height:100%;
}
body {
min-height:100%;
}
This solves everything for me and it helps me to control my footer and it can have the fixed footer no matter if page is being scrolled down.
Technical Solution - EDITED
Historically, 'height' is tricky thing to mold with, compared to 'width', the easiest. Since css focus on <body>
for styling to work. The code above - we gave <html>
and <body>
a height. This is where magic comes into picture - since we have 'min-height' on playing table, we are telling browser that <body>
is superior over <html>
because <body>
holds the min-height. This in turn, allows <body>
to override <html>
because <html>
had height already earlier. In other words, we are tricking browser to "bump" <html>
off the table, so we could style independently.