I am trying to make an html page with 2 divs : "top" and "main"
The top <div> must take the place of its contained elements, the main <div> must take all the remaining place.
Here is what I tried:
CSS CODE :
html,body{
  height:100%;
}
#top{
  background-color : red;
  padding:10px;
  border:1px solid;
}
#main{
  background-color : blue;
  height:100%;
  padding:10px;
  border:1px solid;
}
#content1{
  background-color:yellow;
}
#content2{
  background-color:yellow;
  height :100%;
}
HTML CODE:
<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <div id="top">
      <div id="content1">content1</div>
    </div>
    <div id="main">
      <div id="content2">content2</div>
    </div>
  </body>
</html>
Here is the jsFiddle
As you can see, the "100%" I set on "content2" causes this div to take 100% of the page height instead of just the remaining space. Is there a magic css property to fix this?
EDIT:
Thank you for all your solutions.
I finally chose the solution proposed by Riccardo Pasianotto based on CSS properties display:table and display:table-row.
Here is my final HTML CODE:
<!DOCTYPE html>
<body>
  <div id="content1" class="row">
    <div class="subcontent">
      <div class="subContentContainer">
         content1
      </div>
    </div>
  </div>
  <div id="content2" class="row">
    <div class="subcontent">
      <div class="subContentContainer">
        content2
      </div>
    </div>
  </div>    
</body>
Here is the corresponding CSS CODE:
html,body{
  padding:0;
  margin:0;
  height:100%;
  width:100%;
}
body{
  display:table;
}
.row{
  display:table-row;
  width:100%;
}
#top{
  height:100px;
}
#content1{
  background:#aa5555;
  padding:10px;
}
#content2{
  background:#5555AA;
  height:100%;
}
.subcontent{
  padding : 10px;
  height:100%;
}
.subContentContainer{
  background-color:yellow;
  height:100%;
}
And here is the corresponding Jsfiddle.
 
     
     
     
     
     
    