Problème simple: comment aligner verticalement un col dans un col à l’aide de bootstrap? Exemple ici (je veux aligner verticalement child1a et child1b):
HTML
<div class="col-lg-12">
<div class="col-lg-6 col-md-6 col-12 child1">
<div class="col-12 child1a">Child content 1a</div>
<div class="col-12 child1b">Child content 1b</div>
</div>
<div class="col-lg-6 col-md-6 col-12 child2">
Child content 2<br>
Child content 2<br>
Child content 2<br>
Child content 2<br>
Child content 2<br>
</div>
</div>
UPDATE
Quelques CSS:
.col-lg-12{
top:40px;
bottom:0px;
border:4px solid green;
}
.child1a, .child1b{
border:4px solid black;
display:inline-block !important;
}
.child1{
border:4px solid blue;
height:300px;
display:table-cell !important;
vertical-align:middle;
}
.child2{
border:4px solid red;
}
.parent {
display: table;
table-layout: fixed;
}
.child {
display:table-cell;
vertical-align:middle;
text-align:center;
}
table-layout: fixed
empêche de casser la fonctionnalité des classes de couleurs.
Peut-être un vieux sujet, mais si quelqu'un a besoin d'aide supplémentaire avec ceci, procédez comme suit par exemple (cela place le texte dans la ligne médiane de l'image s'il a une hauteur plus grande que le texte).
HTML:
<div class="row display-table">
<div class="col-xs-12 col-sm-4 display-cell">
img
</div>
<div class="col-xs-12 col-sm-8 display-cell">
text
</div>
</div>
CSS:
.display-table{
display: table;
table-layout: fixed;
}
.display-cell{
display: table-cell;
vertical-align: middle;
float: none;
}
La chose importante que j'ai manquée était "float: none;" depuis qu'il a été laissé à flot des attributs bootstrap col.
À votre santé!
Pour le parent: display: table;
Pour l'enfant: display: table-cell;
Ajoutez ensuite vertical-align: middle;
Je peux faire du violon, mais le temps à la maison maintenant, yay!
OK voici le charmant violon: http://jsfiddle.net/lharby/AJAhR/
.parent {
display:table;
}
.child {
display:table-cell;
vertical-align:middle;
text-align:center;
}
Je devais ajouter largeur: 100%; afficher un tableau pour corriger un comportement étrange dans IE et FF, lorsque j'ai utilisé cet exemple. IE et FF ont eu quelques problèmes pour afficher les balises col-md- * à la bonne largeur
.display-table {
display: table;
table-layout: fixed;
width: 100%;
}
.display-cell {
display: table-cell;
vertical-align: middle;
float: none;
}
http://jsfiddle.net/b9chris/zN39r/
HTML:
<div class="item row">
<div class="col-xs-12 col-sm-6"><h4>This is some text.</h4></div>
<div class="col-xs-12 col-sm-6"><h4>This is some more.</h4></div>
</div>
CSS:
div.item div h4 {
height: 60px;
vertical-align: middle;
display: table-cell;
}
Notes IMPORTANTES:
vertical-align: middle; display: table-cell;
doit être appliqué à une balise pour laquelle aucune classe Bootstrap n'est appliquée; il ne peut s'agir d'un col-*
, d'un row
, etc.row
ou col-*
.http://jsfiddle.net/b9chris/zN39r/1/
CSS:
div.item div {
background: #fdd;
table-layout: fixed;
display: table;
}
div.item div h4 {
height: 60px;
vertical-align: middle;
display: table-cell;
background: #eee;
}
Notez la disposition de la table et les propriétés d'affichage ajoutées sur les balises col-*
. Ceci doit être appliqué aux balises qui ont col-*
appliqué; ça n'aidera pas les autres tags.
La réponse de Prinsen est le meilleur choix. Mais, pour résoudre le problème où les colonnes ne se réduisent pas, son code doit être entouré d'une instruction de vérification du support. De cette façon, ces styles ne sont appliqués que lorsque les plus grandes colonnes sont actives. Voici la réponse complète mise à jour.
HTML:
<div class="row display-table">
<div class="col-xs-12 col-sm-4 display-cell">
img
</div>
<div class="col-xs-12 col-sm-8 display-cell">
text
</div>
</div>
CSS:
@media (min-width: 768px){
.display-table{
display: table;
table-layout: fixed;
}
.display-cell{
display: table-cell;
vertical-align: middle;
float: none;
}
}