Decided to provide an updated answer for you.
Utilizing Flexbox is a fantastic way to arrange and position elements. Below is an example created with flexbox that fits your requirements. Some adjustments may be needed to fine-tune it, but this should give you a good starting point:
aside {
background: yellow;
}
main {
background: blue;
}
footer {
background: pink;
}
.container {
display: flex;
flex-wrap: wrap;
}
footer {
flex-basis: 100%;
}
aside {
flex-basis: 300px;
}
main {
flex: 1;
}
<div class="container">
<aside>
some text here
</aside>
<main>
more text here
</main>
<footer>
footer text
</footer>
</div>
Flexbox is widely supported on all browsers now, making it a reliable choice for layout design. I personally use it frequently in my projects. For more insights on what you can achieve with Flexbox, check out this guide: https://css-tricks.com/snippets/css/a-guide-to-flexbox/
UPDATE: To see which features work on various browsers, you can visit: http://caniuse.com/#search=flexbox