J'ai trois colonnes dans une rangée. Je veux que les trois colonnes aient la même hauteur (remplissez tout l'espace blanc)
Actuellement, cela ressemble à ceci:
Comme vous pouvez le constater, la colonne de gauche correspond à la hauteur correcte. Où le milieu et la droite ne sont pas.
L'échafaudage ressemble à ceci:
<div class="container">
<div class="row">
<div class="span3">
-- menu --
</div>
<div class="span5">
-- gray content --
</div>
<div class="span3">
-- black content--
</div>
</div>
</div>
J'ai essayé de donner la hauteur de milieu et de droite de 100%, mais ça ne le fait pas. Quelqu'un peut-il me guider dans la bonne direction?
J'utilise la dernière version de Twitter Bootstrap
Vous pouvez résoudre ce problème sans JS. Utilisez simplement
bottom: 0;
top: 0;
position: absolute; /* The container must have position: relative */
C'est magique :)
Un exemple que j'ai fait: http://fiddle.jshell.net/E8SK6/1
Résultat: http://fiddle.jshell.net/E8SK6/1/show/
Modifier :
Comme vous avez dit dans un commentaire que le menu est toujours le plus grand, vous pouvez utiliser ce nouvel exemple: http://fiddle.jshell.net/E8SK6/5/
Si vous ne savez pas lequel d’entre eux est le plus long, peut-être que la réponse sur ce fil est préférable. Il utilise display: table-cell. Ici est l'exemple
J'ai trouvé cette solution pour bootstrap 3 qui fonctionne très bien pour moi
http://www.minimit.com/articles/solutions-tutorials/bootstrap-3-responsive-columns-of-same-height
Il utilise ces styles:
/* columns of same height styles */
.container-xs-height {
display:table;
padding-left:0px;
padding-right:0px;
}
.row-xs-height {
display:table-row;
}
.col-xs-height {
display:table-cell;
float:none;
}
@media (min-width: 768px) {
.container-sm-height {
display:table;
padding-left:0px;
padding-right:0px;
}
.row-sm-height {
display:table-row;
}
.col-sm-height {
display:table-cell;
float:none;
}
}
@media (min-width: 992px) {
.container-md-height {
display:table;
padding-left:0px;
padding-right:0px;
}
.row-md-height {
display:table-row;
}
.col-md-height {
display:table-cell;
float:none;
}
}
@media (min-width: 1200px) {
.container-lg-height {
display:table;
padding-left:0px;
padding-right:0px;
}
.row-lg-height {
display:table-row;
}
.col-lg-height {
display:table-cell;
float:none;
}
}
/* vertical alignment styles */
.col-top {
vertical-align:top;
}
.col-middle {
vertical-align:middle;
}
.col-bottom {
vertical-align:bottom;
}
Et ce balisage
<div class="container container-xs-height">
<div class="row row-xs-height">
<div class="col-xs-6 col-xs-height"></div>
<div class="col-xs-3 col-xs-height col-top"></div>
<div class="col-xs-2 col-xs-height col-middle"></div>
<div class="col-xs-1 col-xs-height col-bottom"></div>
</div>
</div>
Ah c'est un problème séculaire.
Si vous définissez une hauteur de 100% sur un élément, son parent a besoin d'une hauteur définie pour pouvoir être éteint. Puisque le div.row a une hauteur fluide, cela ne fonctionnera pas.
La solution serait la suivante:
Définissez une hauteur fixe sur le div.row
(probablement pas une bonne idée si vous voulez une conception fluide)
ou
Utilisez jQuery pour le faire:
HTML
<div class="row equalHeight">
<div class="span3">
-- menu --
</div>
<div class="span5">
-- gray content --
</div>
<div class="span3">
-- black content--
</div>
</div>
jQuery
$('.equalHeight').each(function() {
var eHeight = $(this).innerHeight();
$(this).find('div').outerHeight(eHeight);
});
Aujourd'hui, c'est possible avec row-eq-height
LINK: http://getbootstrap.com.vn/examples/equal-height-columns/