A maneira com mais compatibilidade cruzada que encontrei de fazer isso não é muito óbvia. Você precisa remover o flutuador da segunda coluna e aplicar overflow:hidden
a ele. Embora isso pareça estar ocultando qualquer conteúdo que saia do div, ele realmente força o div a permanecer dentro de seu pai.
Usando seu código, este é um exemplo de como isso poderia ser feito:
<div style="width: 100px; float: left;">menu</div>
<div style="overflow: hidden;">content</div>
Espero que isso seja útil para alguém com esse problema, é o que eu achei que funciona melhor para o site que eu estava construindo, depois de tentar ajustá-lo a outras resoluções. Infelizmente, isso não funcionará se você incluir um flutuante à direita div
após o conteúdo também, se alguém souber uma boa maneira de fazer isso funcionar, com boa compatibilidade com o IE, ficaria muito feliz em saber.
Nova e melhor opção usando display: flex;
Agora que o modelo Flexbox está amplamente implementado, eu realmente recomendo usá-lo, pois permite muito mais flex
flexibilidade com o layout. Aqui está uma coluna simples de duas colunas como a original:
<div style="display: flex;">
<div style="width: 100px;">menu</div>
<div style="flex: 1;">content</div>
</div>
E aqui está uma coluna de três colunas com uma coluna central de largura flexível!
<div style="display: flex;">
<div style="width: 100px;">menu</div>
<div style="flex:1;">content</div>
<div style="width: 100px;">sidebar</div>
</div>