You should be able to do this if you add in a div (#header
below) to wrap your contents of 1.
-
If you float
#header
, the content from#someid
will be forced to flow around it. -
Next, you set
#header
‘s width to 100%. This will make it expand to fill the width of the containing div,#full
. This will effectively push all of#someid
‘s content below#header
since there is no room to flow around the sides anymore. -
Finally, set
#someid
‘s height to 100%, this will make it the same height as#full
.
JSFiddle
HTML
<div id="full">
<div id="header">Contents of 1</div>
<div id="someid">Contents of 2</div>
</div>
CSS
html, body, #full, #someid {
height: 100%;
}
#header {
float: left;
width: 100%;
}
Update
I think it’s worth mentioning that flexbox is well supported across modern browsers today. The CSS could be altered have #full
become a flex container, and #someid
should set it’s flex grow to a value greater than 0
.
html, body, #full {
height: 100%;
}
#full {
display: flex;
flex-direction: column;
}
#someid {
flex-grow: 1;
}