J'ai trois divs que je voudrais afficher sur la même ligne. Chacune des trois a des largeurs et des hauteurs différentes, et elles ne sont pas du texte droit. J'aimerais en aligner un à gauche (tout à gauche), en aligner un autre à droite (tout à fait à droite) et centrer le troisième (au milieu du div contenant, toute la page dans ce cas ).
De plus, j'aimerais que les trois div soient alignés verticalement au bas de la div contenant. La solution que j'ai a verticalement les aligne au sommet de la div contenant.
Quelle est la meilleure façon de gérer cela?
En définissant votre conteneur div à position:relative
et les divs enfants à position:absolute
, vous pouvez positionner les divs de manière absolue dans les limites du conteneur.
Cela facilite la tâche car vous pouvez utiliser bottom:0px
pour tout aligner verticalement vers le bas du conteneur, puis utiliser le style gauche/droite pour vous positionner le long de l'axe horizontal.
J'ai mis en place un jsFiddle de travail: http://jsfiddle.net/Damien_at_SF/KM7sQ/5/ et le code qui suit:
HTML:
<div id="container">
<div id="left">left</div>
<div id="center">center</div>
<div id="right">right</div>
</div>
CSS:
#container {
position:relative;
height:400px;
width:100%;
border:thick solid black;
}
#container div {
background:grey;
width:200px;
}
#left {
position:absolute;
left:0px;
bottom:0px;
}
#center {
position:absolute;
left:50%;
margin-left:-100px;
bottom:0px;
}
#right {
position:absolute;
right:0px;
bottom:0px;
}
Remarque: Pour le div "center", la marge gauche = 1/2 la largeur du div :)
J'espère que cela pourra aider :)
Ma technique est similaire à @ Damien-at-SF:
J'ai essayé de démontrer de manière rigoureuse toutes les exigences que vous aviez demandées.
HTML:
<div id="container">
<div id="left"></div>
<div id="mid"></div>
<div id="right"></div>
</div>
CSS:
#container {
position: relative;
height: 400px;
width: 80%;
min-width: 400px;
margin: 0 auto;
background: #ccc
}
#left, #right, #mid {
position: absolute;
bottom: 0;
}
#left {
left: 0;
width: 80px;
height: 200px;
background: red
}
#right {
right: 0;
width: 120px;
height: 170px;
background: blue
}
#mid {
left:50%;
margin-left: -80px;
width: 160px;
height: 300px;
background: #f39
}
Pour rendre votre centre div élastique, vous pouvez faire quelque chose comme:
<div style="display:table; width:500px;">
<div style="display:table-row;">
<div style="display:table-cell; width:50px;"></div>
<div style="display:table-cell;"></div>
<div style="display:table-cell; width:50px;"></div>
</div>
</div>
Une amélioration supplémentaire à la première réponse:
Dans le CSS "center", vous devez ajouter:
text-align:center;
Dans le "bon" CSS div, vous devez ajouter:
text-align:right;
... pour réaliser parfaitement l'alignement gauche/centre/droite.
Définissez position: relative
sur le div contenant, définissez position: relative
sur vos 3 divs et définissez l'attribut bottom
des 3 divs sur 0
:
bottom: 0