Solution à jour (octobre 2014): prête pour les mises en page fluides
Introduction:
Cette solution est encore plus simple que celle proposée par Leigh. C'est en fait basé sur cela.
Ici , vous pouvez remarquer que l'élément central (dans notre cas, avec la "content__middle"classe) ne pas avoir une propriété de dimension spécifiée - sans largeur, ni rembourrage, ni marge propriété liée du tout - mais seulement un overflow: auto;(voir la note 1).
Le grand avantage est que maintenant vous pouvez spécifier a max-widthet a min-widthà vos éléments gauche et droit . Ce qui est fantastique pour les mises en page fluides ... d'où une mise en page réactive :-)
note 1: par rapport à la réponse de Leigh où vous devez ajouter les propriétés margin-left& margin-rightà la "content__middle"classe.
Code avec mise en page non fluide:
Ici, les éléments gauche et droit (avec les classes "content__left"et "content__right") ont une largeur fixe (en pixels): donc appelée mise en page non fluide.
Démo en direct sur 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>
Code avec mise en page fluide:
Ici les éléments gauche et droit (avec les classes "content__left"et "content__right") ont une largeur variable (en pourcentages) mais aussi une largeur minimale et maximale: donc appelée mise en page fluide.
Démo en direct dans une mise en page fluide avec les max-widthpropriétés 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>
Prise en charge du navigateur
Testé sur BrowserStack.com sur les navigateurs Web suivants:
- IE7 à IE11
- Ff 20, Ff 28
- Safari 4.0 (Windows XP), Safari 5.1 (Windows XP)
- Chrome 20, Chrome 25, Chrome 30, Chrome 33,
- Opéra 20