Dunque, rispondo un po' qui un po' là.
Per forzare dei div a stare dentro dei div dove non vogliono stare, non occorre un quarto div! Il modo standard per far stare i due div dentro il terzo è che il contenitore abbia
Codice:
overflow:auto;
width:taldeitali;
oppure
float:left;
width:taldeitali;
Non importa quale dei due, basta che specifichi le dimensioni.
Secondo: un div vuoto?!?!?! E che te ne fai?
Terzo: per posizionare le sezioni, tu fai qualcosa di scorretto:
Codice:
DIV#header { width:auto }
DIV#menu { float:left; width:20% }
DIV#main { margin-left:20%; width:auto }
DIV#banner { margin-left:20%; width:auto }
DIV#footer { clear:both; width:auto }
Tu stai sovrapponendo il main al menu, tecnicamente, sfruttando la trasparenza dei margini! Sarebbe più corretto e reso meglio da tutti i browser che tu non li sovrapponessi. Fai così:
Codice:
DIV#header { width:auto }
DIV#menu { float:left; margin:0; padding:0; width:19% }
DIV#main { float:left; margin:0;padding:0; width:80%; margin-right:-1px; }
DIV#footer { clear:both; width:auto }
e così via. In questo modo, avrai veramente menu e main affiancati, e non sovrapposti.
Noterai che la larghezza totale è 99%: questo va fatto perché i broswer spesso fanno errori di arrotondamento, e 100% lo mettono a 101%, sballando fuori. margin-right:-1px serve a riportare dentro una eventuale fuoriuscita.