Flex-boxes are the solution - and they're fantastic. I've been wanting something like this out of css for a decade. All you need is to add display: flex
to your style for "Main" and flex-grow: 100
(where 100 is arbitrary - its not important that it be exactly 100). Try adding this style (colors added to make the effect visible):
<style>
#Main {
background-color: lightgray;
display: flex;
}
#div1 {
border: 1px solid green;
height: 50px;
display: inline-flex;
}
#div2 {
border: 1px solid blue;
height: 50px;
display: inline-flex;
flex-grow: 100;
}
#div3 {
border: 1px solid orange;
height: 50px;
display: inline-flex;
}
</style>
More info about flex boxes here: https://css-tricks.com/snippets/css/a-guide-to-flexbox/