Utilizing a negative z-index allows elements to be positioned behind others, making the solution relatively straightforward.
<div class="color"></div>
<div class="fixed">
<div class="header">
</div>
<div class="nav">
Text
</div>
<div class="body">
</div>
</div>
html, body
{
height: 100;
margin: 0;
}
div.color
{
position: absolute; /*Remove from normal flow*/
top: 0; /*Position at top left*/
left: 0;
z-index: -1; /*Place below other elements*/
width: 100%; /*Full width*/
height: 300px; /*300px in height*/
background: #c7edfb; /*Specific color*/
}
div.fixed
{
margin: 50px auto 0; /*Push content down by 50px and center it*/
width: 600px; /*Content width is 600px*/
}
div.header
{
height: 150px; /*150px tall gray block on top*/
background: #222; /*Dark gray*/
}
div.nav
{
padding: 25px 0; /*Spacing between blocks*/
}
div.body
{
min-height: 300px; /*Set minimum height*/
background: #777; /*Light gray*/
box-shadow: 0 0 8px black; /*Add drop shadow*/
}