Devi esplicitare meglio cosa intendi per "dinamico", che nel linguaggio del Web vuol dire due o tre cose diverse a seconda del contesto.
Dinamico lato client
tramite JS (o altro strumento - anche solo CSS, in qualche caso) la colonna viene a cambiare larghezza: la dinamicita` viene decisa dall'utente, mediante la pressione di un bottone o la posizione del mouse
Dinamico lato server
e` il server che definisce le larghezze, una volta conosciuto il contenuto dei vari pezzi: in tal caso la dinamicita` e` "a priori", e non necessita di interventi da parte dell'utente / non dipende da come si comporta l'utente
Altre soluzioni diverse/intermedie
da definire meglio
Ma forse nel tuo caso devi solo definire due layout, molto simili tra loro, di cui uno a tre colonne e l'altro a due: in tal caso puoi usare due CSS diversi, oppure definire nomi diversi (id o classi) ai tuoi blocchi principali: esempio:
codice:
body {
...
}
#menu3 {
width: 30%;
...
}
#corpo3 {
width: 50%;
}
#margin3 {
width: 19%;
}
#menu2 {
width: 34%;
...
}
#corpo2 {
width: 65%;
}
E nelle pagine HTML, in un caso:
codice:
<body>
<div id="menu3">
....
</div>
<div id="corpo3">
....
</div>
<div id="margin3">
....
</div>
</body>
Nell'atro caso:
codice:
<body>
<div id="menu2">
....
</div>
<div id="corpo2">
....
</div>
</body>