Ответ 1
.parent {
display: table;
table-layout: fixed;
}
.child {
display:table-cell;
vertical-align:middle;
text-align:center;
}
table-layout: fixed
предотвращает нарушение функций классов col.
Простая проблема: как вертикально выровнять col внутри col, используя bootstrap? Пример здесь (я хочу вертикально выровнять child1a и 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
Некоторые 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
предотвращает нарушение функций классов col.
Может быть, старая тема, но если кому-то нужна дополнительная помощь, сделайте следующее, например (это помещает текст в среднюю линию изображения, если он имеет большую высоту, чем текст).
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;
}
Важная вещь, которую я пропустил, была "float: none"; поскольку он получил float слева от атрибутов бутстрапа col.
Ура!
Для родителя: display: table;
Для ребенка: display: table-cell;
Затем добавьте vertical-align: middle;
Я могу сделать скрипку, но домашнее время, yay!
Хорошо, вот прекрасная скрипка: http://jsfiddle.net/lharby/AJAhR/
.parent {
display:table;
}
.child {
display:table-cell;
vertical-align:middle;
text-align:center;
}
Мне пришлось добавить ширину: 100%; для отображения таблицы, чтобы исправить некоторые странные bahavior в IE и FF, когда я использовал этот пример. У IE и FF возникли проблемы с отображением тегов col-md- * с правой шириной
.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;
}
Важные замечания:
vertical-align: middle; display: table-cell;
должен применяться к тегу, для которого не применяются классы Bootstrap; он не может быть col-*
, a row
и т.д.row
или 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;
}
Обратите внимание на добавленные свойства макета таблицы и отображения в тегах col-*
. Это должно применяться к тегам (методам), которые применяют col-*
; это не поможет в других тегах.
Ответ Prinsen - лучший выбор. Но, чтобы исправить проблему, когда столбцы не сворачиваются, его код должен быть окружен оператором проверки СМИ. Таким образом, эти стили применяются только при активном использовании больших столбцов. Вот обновленный полный ответ.
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;
}
}
Вы хотите, чтобы 1b и 1b были бок о бок?
<div class="col-lg-6 col-md-6 col-12 child1">
<div class="col-6 child1a">Child content 1a</div>
<div class="col-6 child1b">Child content 1b</div>
</div>
С помощью Bootstrap 4 вы можете сделать это гораздо проще: http://v4-alpha.getbootstrap.com/layout/flexbox-grid/#vertical-alignment