Soluzione aggiornata (ottobre 2014): pronta per layout fluidi
Introduzione:
Questa soluzione è ancora più semplice di quella fornita da Leigh. In realtà è basato su di esso.
Qui puoi notare che l'elemento centrale (nel nostro caso, con "content__middle"classe) non ha alcuna proprietà dimensionale specificata - nessuna larghezza, né padding, né proprietà relativa al margine - ma solo una overflow: auto;(vedi nota 1).
Il grande vantaggio è che ora puoi specificare a max-widthe a min-widthper i tuoi elementi sinistro e destro . Il che è fantastico per i layout fluidi .. quindi layout reattivo :-)
nota 1: rispetto alla risposta di Leigh in cui è necessario aggiungere le proprietà margin-left& margin-rightalla "content__middle"classe.
Codice con layout non fluido:
Qui gli elementi sinistro e destro (con classi "content__left"e "content__right") hanno una larghezza fissa (in pixel): quindi chiamato layout non fluido.
Demo dal vivo su 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>
Codice con layout fluido:
Qui gli elementi sinistro e destro (con classi "content__left"e "content__right") hanno una larghezza variabile (in percentuale) ma anche una larghezza minima e massima: da qui chiamata layout fluido.
Demo dal vivo in un layout fluido con le max-widthproprietà 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>
Supporto browser
Testato su BrowserStack.com sui seguenti browser web:
- Da 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,
- Opera 20