Reputation: 946
Is there a way that I could set a DIV element to take up all the height on the page. Something like:
div.left {
height: 100%;
width: 50%;
background-color: blue;
position: absolute;
top: 0;
left: 0;
}
I've Google'd it a few times but they all seem like really really complicated work arounds for what is probably a really really simple problem with a simple solution.
Upvotes: 9
Views: 17109
Reputation: 129
This is the simplest way to make a div take up the full height of a page.
height: 100vh;
vh
is Viewport Height, and 1vh
is equal to 1% of the height of the viewport. See here for more details on this and other units of measurement in CSS.
Upvotes: 11
Reputation: 111
This problem can be solved using CSS
flexbox.
Go through the w3schools documentation of flexbox here and another helpful link css-tricks here
In this scenario.
put display: flex; in the parent div container
div.container{
height: 100%;
display: flex;
}
then in the child div put display: 1;
div.left{
height: 100%;
display: 1;
}
note that if the height of the parent div container is set dynamically, the child div will always have the same height as the parent.
Upvotes: 1
Reputation: 15609
If the div
is a direct child of body
, this works:
body, html {height: 100%; }
div { height: 100%; }
Otherwise, you have to keep adding height: 100%
to each of it's parents, grandparents,... untill you've reached a direct child of body
.
It's simple. For a percentage height to work, the parent must have a specified height(px, %... whichever). If it does not, then it's as if you've set height: auto
;
Another way to do it is as you have in your answer: it's to give it an absolute position value, relative to the element that defines the page's height.
Upvotes: 15
Reputation: 2140
Pretty sure you need to set the html
and body
to 100%:
html {
height: 100%;
}
body {
height: 100%;
}
div.left {
height: 100%;
}
Fiddle here.
Upvotes: 1
Reputation: 444
Make sure you set height: 100%
to html
and body
so that the div has a context for height! Hope that helps.
Upvotes: 1