Tengo algo como eso:
<div style="width:100px;float:left">menu</div>
<div style="float:left">content</div>
Ambos flotadores son necesarios. Quiero que el div de contenido llene toda la pantalla menos esos 100px para el menú. Si no uso float, el div se expande exactamente como debería. Pero, ¿cómo configuro esto cuando se establece float? Si uso algo como
style=width:100%
luego, el div de contenido obtiene el tamaño del padre, que es el cuerpo u otro div que también probé, por lo que, por supuesto, no se ajusta a la derecha del menú y se muestra a continuación.
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:
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:¡Y aquí hay una columna de tres columnas con una columna central de ancho flexible!
fuente
Solución sin fijar tamaño en su margen
+1 para Merkuro, pero si el tamaño del flotador cambia, su margen fijo fallará. Si usa el CSS de arriba a la derecha
div
, cambiará muy bien de tamaño con el cambio de tamaño en el flotador izquierdo. Es un poco más flexible así. Compruebe el violín aquí: http://jsfiddle.net/9ZHBK/144/fuente
overflow: hidden
yoverflow auto
resultan en el mismo comportamiento. También creo que la gente aprecia el Fiddle.Los elementos flotantes se eliminan del diseño de flujo normal y los elementos de bloque, como los DIV, ya no abarcan el ancho de su padre. Las reglas cambian en esta situación. En lugar de reinventar la rueda, visite este sitio para ver algunas posibles soluciones para crear el diseño de dos columnas que busca: http://www.maxdesign.com.au/presentation/page_layouts/
Específicamente, el "Diseño líquido de dos columnas".
¡Salud!
fuente
Esta es una solución actualizada para HTML 5 si alguien está interesado y no le gusta "flotar".
La tabla funciona muy bien en este caso, ya que puede establecer el ancho fijo para la tabla y la celda de la tabla.
http://jsfiddle.net/EAEKc/596/ código fuente original de @merkuro
fuente
este uso puede resolver su problema.
fuente
Y según
merkuro
la solución de, si desea maximizar la de la izquierda, debe usar:No se ha probado en IE, por lo que puede parecer roto en IE.
fuente
La respuesta aceptada podría funcionar, pero no me gusta la idea de márgenes superpuestos. En HTML5, haría esto con
display: flex;
. Es una solución limpia. Simplemente configure el ancho para un elemento yflex-grow: 1;
para el elemento dinámico. Una versión editada de merkuros fiddle: https://jsfiddle.net/EAEKc/1499/fuente
Hola, hay una manera fácil con el método oculto de desbordamiento en el elemento derecho.
fuente
Esto podría funcionar:
fuente