Solución actualizada (octubre de 2014): lista para diseños fluidos
Introducción:
Esta solución es incluso más sencilla que la proporcionada por Leigh
. En realidad, se basa en él.
Aquí puede observar que el elemento intermedio (en nuestro caso, con "content__middle"
clase) no tiene ninguna propiedad dimensional especificada, ni ancho, ni relleno, ni propiedad relacionada con el margen en absoluto, sino solo unaoverflow: auto;
(ver nota 1).
La gran ventaja es que ahora puede especificar un max-width
y un min-width
a sus elementos izquierdo y derecho . Lo cual es fantástico para los diseños de fluidos .. por lo tanto sensible diseño :-)
nota 1: versus la respuesta de Leigh, donde necesita agregar las propiedades margin-left
& margin-right
a la "content__middle"
clase.
Código con diseño no fluido:
Aquí los elementos izquierdo y derecho (con clases "content__left"
y "content__right"
) tienen un ancho fijo (en píxeles): por eso se llama diseño no fluido.
Demostración en vivo en http://jsbin.com/qukocefudusu/1/edit?html,css,output
<style>
.content {
width: 100%;
}
.content__left {
width: 100px;
float: left;
background-color: #fcc;
}
.content__middle {
background-color: #cfc;
overflow: auto;
}
.content__right {
width: 100px;
float: right;
background-color: #ccf;
}
</style>
<div class="content">
<div class="content__left">
left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>
</div>
<div class="content__right">
right div<br/>right div<br/>right div<br/>right div<br/>
</div>
<div class="content__middle">
middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br />bit taller
</div>
</div>
Código con diseño fluido:
Aquí los elementos izquierdo y derecho (con clases "content__left"
y "content__right"
) tienen un ancho variable (en porcentajes) pero también un ancho mínimo y máximo: por eso se llama diseño fluido.
Demostración en vivo en un diseño fluido con las max-width
propiedades http://jsbin.com/runahoremuwu/1/edit?html,css,output
<style>
.content {
width: 100%;
}
.content__left {
width: 20%;
max-width: 170px;
min-width: 40px;
float: left;
background-color: #fcc;
}
.content__middle {
background-color: #cfc;
overflow: auto;
}
.content__right {
width: 20%;
max-width: 250px;
min-width: 80px;
float: right;
background-color: #ccf;
}
</style>
<div class="content">
<div class="content__left">
max-width of 170px & min-width of 40px<br />left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>
</div>
<div class="content__right">
max-width of 250px & min-width of 80px<br />right div<br/>right div<br/>right div<br/>right div<br/>
</div>
<div class="content__middle">
middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br />bit taller
</div>
</div>
Soporte del navegador
Probado en BrowserStack.com en los siguientes navegadores web:
- IE7 a IE11
- Ff 20, Ff 28
- Safari 4.0 (Windows XP), Safari 5.1 (Windows XP)
- Chrome 20, Chrome 25, Chrome 30, Chrome 33,
- Ópera 20