Це популярне запитання Bootstrap, тому я оновив та розширив відповідь для Bootstrap 3 та Bootstrap 4 ...
Bootstrap 3 « проблема висоти » відбувається тому , що стовпчики використовувати float:left
. Коли стовпець «плаває», він виводиться із звичайного потоку документа. Він зміщується вліво або вправо, доки він не торкнеться краю контейнера, що містить його. Отже, коли у вас нерівномірна висота стовпчиків , правильною поведінкою є складання їх до найближчої сторони.
Примітка : Наведені нижче варіанти застосовні до сценаріїв переносу стовпців, коли в одному.row
є більше 12 одиниць колон . Читачам, які не розуміють, чому коли-небудь буде більше 12 збірок підряд , або вважають, що рішення полягає у "використанні окремих рядків", слід прочитати це спочатку
Є кілька способів це виправити .. (оновлено на 2018 рік)
1 - Подібний підхід ( рекомендований Bootstrap ) (вимагає ітерації кожних X стовпців). Це змусить обтікати кожні X кількість стовпців ...
<div class="row">
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="clearfix"></div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="clearfix"></div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
</div>
Демонстрація Clearfix (однорівнева)
Демонстрація Clearfix (адаптивні рівні) - напр.col-sm-6 col-md-4 col-lg-3
Існує також CSS-тільки варіація на «clearfix»
CSS-тільки clearfix з таблицями
2 - Зробіть стовпці однакової висоти (за допомогою flexbox):
Оскільки проблема спричинена різницею у висоті, ви можете зробити стовпці однакової висоти в кожному рядку. Flexbox - найкращий спосіб зробити це, і він підтримується в Bootstrap 4 ...
.row.display-flex {
display: flex;
flex-wrap: wrap;
}
.row.display-flex > [class*='col-'] {
display: flex;
flex-direction: column;
}
Демонстрація Flexbox рівної висоти
3 - Видаліть плаваючі стовпці, використовуючи вбудований блок.
Знову ж таки, проблема висоти виникає лише тому, що стовпці плаваючі. Інший варіант - встановити для стовпців значення display:inline-block
і float:none
. Це також забезпечує більшу гнучкість для вертикального вирівнювання. Однак у цьому рішенні між стовпцями не повинно бути пробілів HTML , інакше елементи вбудованого блоку мають додатковий простір і завчасно загортаються.
Демо виправлення вбудованого блоку
4 - Підхід до стовпців CSS3 (рішення, подібне до кладки / Pinterest).
Це не рідне для Bootstrap 3, а інший підхід, що використовує багатостолбці CSS . Недоліком цього підходу є порядок стовпців зверху вниз, а не зліва направо. Bootstrap 4 включає такий тип рішення :
Bootstrap 4 Masonry cards Demo .
Завантажувальна демонстрація 3 багатоколонних
5 - Кладовий підхід JavaScript / jQuery
Нарешті, ви можете використовувати плагін, такий як Isotope / Masonry:
Bootstrap Masonry Demo
Masonry Demo 2
Детальніше про стовпці змінної висоти Bootstrap
Оновлення 2018 р.
Усі стовпці мають однакову висоту в Bootstrap 4, оскільки він використовує flexbox за замовчуванням, тому «проблема висоти» не є проблемою. Крім того, Bootstrap 4 включає такий тип багатоколонного рішення:
Bootstrap 4 Masonry cards Demo .