Vorgehensweise
Das alles umschließende Element #wrap bekommt keine feste Breite sondern nur einen leichten Randabstand. Dieses Elemetn passt sich somit der Breite des Viewports an.
Die Randspalte #sidebar steht in der Code-Reihenfolge vor dem Inhaltsbereich #content. #sidebar bekommt eine Breitenangabe und wird mit float auf die gewünschte Seite gebracht.
Der Bereich #content bekommt einen Randabstand mind. in der Breite der Randspalte.
Die Fußzeile #footer bekommt die clear-Eigenschaft (Richtung analog Randspalte) und sorgt so dafür, dass sich der umschließende #wrap auch um das gefloatete Element ausdehnt.
Minimales CSS
* {margin:0;padding:0;}#wrap {margin-left:5%;margin-right:5%;}#sidebar {width:12em;float:left;background-color:#ccc;}#content {margin-left:12em;}#footer {clear:left;}
Minimales HTML
<div id="wrap"><div id="header"></div><div id="main"><div id="sidebar"></div><div id="content"></div></div><div id="footer"></div></div>