Solução atualizada (outubro de 2014): pronta para layouts fluidos
Introdução:
Esta solução é ainda mais simples do que a fornecida por Leigh. Na verdade, é baseado nisso.
Aqui você pode notar que o elemento do meio (em nosso caso, com "content__middle"classe) não tem nenhuma propriedade dimensional especificada - nem largura, nem preenchimento, nem propriedade relacionada à margem - mas apenas um overflow: auto;(consulte a nota 1).
A grande vantagem é que agora você pode especificar um max-widthe um min-widthpara seus elementos à esquerda e à direita . O que é fantástico para layouts fluidos ... portanto, layout responsivo :-)
nota 1: versus a resposta de Leigh onde você precisa adicionar as propriedades margin-left& margin-rightà "content__middle"classe.
Código com layout não fluido:
Aqui, os elementos esquerdo e direito (com classes "content__left"e "content__right") têm uma largura fixa (em pixels): portanto, chamado de layout não fluido.
Demonstração ao vivo em 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 com layout fluido:
Aqui, os elementos esquerdo e direito (com classes "content__left"e "content__right") têm uma largura variável (em porcentagens), mas também uma largura mínima e máxima: portanto, chamado de layout fluido.
Demonstração ao vivo em um layout fluido com as max-widthpropriedades 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>
Suporte para navegador
Testado em BrowserStack.com nos seguintes navegadores da web:
- IE7 para IE11
- Ff 20, Ff 28
- Safari 4.0 (Windows XP), Safari 5.1 (Windows XP)
- Chrome 20, Chrome 25, Chrome 30, Chrome 33,
- Opera 20