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#someidwill 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#headersince 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;
}