Il modo più cross-compatibile che ho trovato per farlo non è molto ovvio. È necessario rimuovere il galleggiante dalla seconda colonna e applicarvi overflow:hidden
. Anche se questo sembrerebbe nascondere qualsiasi contenuto al di fuori del div, in realtà costringe il div a rimanere all'interno del suo genitore.
Usando il tuo codice, questo è un esempio di come potrebbe essere fatto:
<div style="width: 100px; float: left;">menu</div>
<div style="overflow: hidden;">content</div>
Spero che questo sia utile a chiunque abbia questo problema, è quello che ho trovato funziona meglio per il sito che stavo costruendo, dopo aver cercato di adattarlo ad altre risoluzioni. Sfortunatamente, questo non funziona se includi anche un float a destra div
dopo il contenuto, se qualcuno conosce un buon modo per farlo funzionare, con una buona compatibilità con IE, sarei molto felice di ascoltarlo.
Nuova, migliore opzione utilizzando display: flex;
Ora che il modello Flexbox è implementato abbastanza ampiamente, in realtà consiglierei di usarlo al suo posto, poiché consente molta più flex
facilità con il layout. Ecco una semplice due colonne come l'originale:
<div style="display: flex;">
<div style="width: 100px;">menu</div>
<div style="flex: 1;">content</div>
</div>
Ed ecco una tre colonne con una colonna centrale di larghezza flessibile!
<div style="display: flex;">
<div style="width: 100px;">menu</div>
<div style="flex:1;">content</div>
<div style="width: 100px;">sidebar</div>
</div>