La forma más compatible que he encontrado de hacer esto no es muy obvia. Debe quitar el flotador de la segunda columna y aplicarlo overflow:hidden
. Aunque esto parecería estar ocultando cualquier contenido que salga del div, en realidad obliga al div a permanecer dentro de su padre.
Usando su código, este es un ejemplo de cómo se podría hacer:
<div style="width: 100px; float: left;">menu</div>
<div style="overflow: hidden;">content</div>
Espero que esto sea útil para cualquiera que tenga este problema, es lo que encontré que funciona mejor para el sitio que estaba construyendo, después de intentar ajustarlo a otras resoluciones. Desafortunadamente, esto no funciona si también incluye un flotador derecho div
después del contenido, si alguien conoce una buena manera de hacer que funcione, con una buena compatibilidad con IE, me encantaría escucharlo.
Nueva y mejor opción usando display: flex;
Ahora que el modelo Flexbox está bastante implementado, recomiendo usarlo en su lugar, ya que permite mucha más flex
flexibilidad con el diseño. Aquí hay una simple dos columnas como la original:
<div style="display: flex;">
<div style="width: 100px;">menu</div>
<div style="flex: 1;">content</div>
</div>
¡Y aquí hay una columna de tres columnas con una columna central de ancho flexible!
<div style="display: flex;">
<div style="width: 100px;">menu</div>
<div style="flex:1;">content</div>
<div style="width: 100px;">sidebar</div>
</div>