Як я можу зробити стовпці Bootstrap однакової висоти?


965

Я використовую Bootstrap. Як я можу зробити три стовпчики однакової висоти?

Ось скріншот проблеми. Я хотів би, щоб сині та червоні стовпці були такої ж висоти, як і жовта.

Три стовпці завантажувальної машини з центральним стовпцем довше, ніж інші два стовпці

Ось код:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container-fluid">
<div class="row">
    <div class="col-xs-4 panel" style="background-color: red">
        some content
    </div>
    <div class="col-xs-4 panel" style="background-color: yellow">
        catz
        <img width="100" height="100" src="https://lorempixel.com/100/100/cats/">
    </div>
    <div class="col-xs-4 panel" style="background-color: blue">
        some more content
    </div>
</div>
</div>



11
На веб-сайті завантажувальної програми є стаття із 5-рядковим рішенням getbootstrap.com.vn/examples/equal-height- Column
Едуард Гамонал

2
Приклад на Bootstrap порушує чуйність Едуарда. Флекс .rowвідсутній flex-wrap: wrap;. Ось приклад роботи з чуйністю: codepen.io/bootstrapped/details/RrabNe
Брайан Уілліс

Можливе вирішення - прозоре зображення в ширину 1 піксель в інших стовпцях. Це нове зображення на одну піксельну ширину відповідає висоті пікселів на зображенні котів у наведеному вище прикладі. (Можливо, це не спрацює та не стане практичним у вашій ситуації)
Sql Surfer

У Bootstrap 4 ми можемо використовувати картку для того ж
Amjad Rehman A

Відповіді:


1044

Рішення 4 за допомогою Bootstrap 4

Bootstrap 4 використовує Flexbox, тому немає необхідності в додаткових CSS.

Демо

<div class="container">
    <div class="row ">
        <div class="col-md-4" style="background-color: red">
          some content
        </div>
        <div class="col-md-4" style="background-color: yellow">
          catz
          <img width="100" height="100" src="https://placekitten.com/100/100/">
        </div>
        <div class="col-md-4" style="background-color: green">
          some more content
        </div>
    </div>
</div>

Рішення 1 з використанням негативних запасів (не порушує чуйність)

Демо

.row{
    overflow: hidden; 
}

[class*="col-"]{
    margin-bottom: -99999px;
    padding-bottom: 99999px;
}

Рішення 2 за допомогою табл

Демо

.row {
    display: table;
}

[class*="col-"] {
    float: none;
    display: table-cell;
    vertical-align: top;
}

Рішення 3 за допомогою flex додано в серпні 2015 року. Коментарі, розміщені до цього, не стосуються цього рішення.

Демо

.row {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display:         flex;
  flex-wrap: wrap;
}
.row > [class*='col-'] {
  display: flex;
  flex-direction: column;
}

7
Подумайте про це як стовпчик, що всмоктується в негативний простір. Якщо ви видалите перелив, ви побачите, що відбувається.
Popnoodles

9
Якщо ви орієнтуєтесь конкретно на клас стовпчика завантажувальної програми, вам, ймовірно, слід використовувати якор ^ замість підстановки *. Використовуючи ^, буде сказано, що клас повинен починатися з col-, оскільки показаний підстановочний код буде відповідати будь-якому класу з col - будь-де в рядку, можливо, це матиме небажані ефекти на стилі, де ви, можливо, використовували звичайний col-. (тобто речі-кол-морепродукти).
Логан Г.

7
Гарна відповідь, з деякими застереженнями. Рішення 1 вимикає поплавок і, таким чином, порушує поведінку сітки завантажувальної мережі. Рішення 2 (пояснюється більш докладно в positioniseverything.net/articles/onetruelayout/equalheight ) не вказує нижню межу (як це обрізається де - то в відступу просторі).
Охад Шнайдер

14
Рішення 3 порушує чутливість рядів.
SPRBRN

10
@Popnoodles слід додати flex-wrap: wrap;до третього прикладу, щоб активувати чуйність. Ви також хочете додати дисплей: flex; флекс-напрямок: стовпчик; до класу стовпців. Якщо ви збираєтесь використовувати .row, а не користувацький клас, вам потрібно буде забезпечити резервне використання для старих браузерів, що змінюють гнучкість дисплея. Ось приклад
Брайан Уілліс

321

Оновлення 2020 року

Найкращий підхід для Bootstap 3.x - використання CSS flexbox (і вимагає мінімального CSS) ..

.equal {
  display: flex;
  display: -webkit-flex;
  flex-wrap: wrap;
}

Приклад завантажувального пристрою тієї ж висоти

Щоб застосувати флексбокс однакової висоти лише для певних точок розриву (чуйний), використовуйте медіа-запит. Наприклад, ось sm(768px) і вище:

@media (min-width: 768px) {
  .row.equal {
    display: flex;
    flex-wrap: wrap;
  }
}

Це рішення також добре працює для декількох рядків (обгортання стовпців):
https://www.bootply.com/gCEXzPMehZ

Інші обхідні шляхи

Ці параметри будуть рекомендовані іншими, але не є гарною ідеєю для чуйного дизайну. Вони працюють лише для простих макетів одного ряду без обгортання стовпців.

1) Використання величезних від’ємних націнок та прокладки

2) Використання display: table-cell (це рішення також впливає на адаптивну сітку, тому запит @media можна використовувати лише для застосування tableдисплея на ширших екранах, перш ніж стовпці вертикально укладаються)


Завантаження 4

Flexbox тепер використовується за замовчуванням у Bootstrap 4, тому немає необхідності в додатковому CSS для створення стовпців однакової висоти: http://www.codeply.com/go/IJYRI4LPwU

Приклад:

<div class="container">
    <div class="row">
        <div class="col-md-6"></div>
        <div class="col-md-6"></div>
    </div>
</div>

5
Ви можете використовувати медіа-запит, щоб застосувати флешбокс лише на більших / ширших пристроях. Я оновив завантажувальну систему: bootply.com/Cn6fA6LuTq
Zim

Якщо хтось зацікавлений, я створив ручку, щоб продемонструвати подібні ефекти на формі за допомогою flexbox.
Джастін Лау

2
Це відома помилка Safari з flexbox: proof: bugs.webkit.org/show_bug.cgi?id=137730
Zim

5
@Stanley коментар про "більше не реагує" є старим і неактуальним.
Зім

1
Це єдине виправлення, яке працювало на мене. Дякую Зіму, це чудово!
Райан НЗ

83

JavaScript не потрібен. Просто додайте клас .row-eq-heightдо наявного .rowсаме так:

<div class="row row-eq-height">
  <div class="col-xs-12 col-sm-4 panel" style="background-color: red">
    some content
  </div>
  <div class="col-xs-6 col-sm-4 panel" style="background-color: yellow">
    kittenz
  <img src="http://placekitten.com/100/100">
  </div>
  <div class="col-xs-6 col-sm-4 panel" style="background-color: blue">
    some more content
  </div>
</div>

Порада: якщо у вашому рядку більше 12 стовпців, сітка завантажувальної машини не зможе завернути її. Тож додайте новеdiv.row.row-eq-height кожні 12 стовпців.

Порада: можливо, вам потрібно буде додати

<link rel="stylesheet" href="http://getbootstrap.com.vn/examples/equal-height-columns/equal-height-columns.css" />

до вашого HTML


5
на основі флексокса. Не працює в IE8 або 9, а також Android 2.x caniuse.com/#feat=flexbox
Chris Moschini

60
Примітка: getbootstrap.vn не є "завантажувальним". Це сторонній проект.
Зім

Це, здається, інтегровано в bootstrap v4.
Кирило Дюхон-Доріс

Я включив правильний CSS (з сайту .vn), але він все зіпсує. Він заснований на flex
ekkis

Чудово ... плагін пекло.
Армада

63

Щоб відповісти на ваше запитання, це все, що вам потрібно, перегляньте демонстраційну версію повністю із встановленим css :

/* Using col-xs media query breakpoint but you can change 481 to 768 to only apply to col-sm and above if you'd like*/

@media only screen and (min-width : 481px) {
    .flex-row {
        display: flex;
        flex-wrap: wrap;
    }
    .flex-row > [class*='col-'] {
        display: flex;
        flex-direction: column;
    }
    .flex-row.row:after, 
    .flex-row.row:before {
        display: flex;
    }
}

Знімок екрана Codepen

Щоб додати підтримку згинання вмісту мініатюр у флексових стовпцях, як на скріншоті вище, також додайте це ... Зауважте, що ви можете це зробити і на панелях:

.flex-row .thumbnail,
.flex-row .caption {
    display: flex;
    flex: 1 0 auto;
    flex-direction: column;
}
.flex-text {
    flex-grow: 1;
}    
.flex-row img {
    width: 100%;
}

Хоча flexbox не працює в IE9 і нижче, ви можете використовувати демонстрацію із резервним запасом, використовуючи умовні теги з чимось на зразок сітки JavaScript як полізаповнення:

<!--[if lte IE 9]>

<![endif]-->

Що стосується інших двох прикладів у прийнятій відповіді ... Демонстрація таблиці - це гідна ідея, але реалізується неправильно. Застосовуючи, що CSS для класів стовпців завантажувальної програми спеціально, без сумніву, повністю порушить структуру сітки. Ви повинні використовувати спеціальний селектор для однієї та двох стилів таблиць, не повинні застосовуватися до [class*='col-']визначених ширин. Цей метод слід застосовувати ТОЛЬКО, якщо ви хочете мати рівні стовпці висоти та однакової ширини. Він не призначений для будь-яких інших макетів і НЕ реагує. Однак ми можемо зробити його резервним на мобільних дисплеях ...

<div class="table-row-equal">
<div class="thumbnail">
    Content...
</div>
<div class="thumbnail">
    Content...
</div>
</div>
@media only screen and (min-width : 480px){
    .table-row-equal {
        display: table;
        width: 100%;
        table-layout: fixed;
        border-spacing: 30px 0px;
        word-wrap: break-word;
    }
    .table-row-equal .thumbnail {
        float: none;
        display: table-cell;
        vertical-align: top;
        width: 1%;
    }
}

Нарешті, перша демонстрація у прийнятій відповіді, яка реалізує версію єдиного вірного макета є хорошим вибором для деяких ситуацій, але не підходить для стовпців завантажувальної програми. Причиною цього є те, що всі стовпці розширюються до висоти контейнера. Таким чином, це також порушить чутливість, оскільки стовпці розширяться не до елементів поруч, а до всього контейнера. Цей метод також не дозволить вам більше застосовувати нижню межу до рядків, а також спричинить інші проблеми на шляху, наприклад, прокручування до прив’язних тегів.

Для повного коду див. Codepen, який автоматично встановлює код флекси.


11
Це єдина відповідь, яка насправді працювала на мене. 3 найкраще оцінені відповіді були лише марною тратою часу
ken2k

3
Виглядає добре, але, на жаль, він не працює в Safari 9.1 на MacOS :-(
KevinH

1
@TheSchecke ось виправлення. Наскільки я знаю, це працює у всіх браузерах, що підтримуються flexbox. Будь ласка, дайте мені знати, якщо я помиляюся. s.codepen.io/bootstrapped/debug/pboJNd . Проблема була пов'язана з row:after, row:beforeнаявністю дисплея: набір столів, який Safari, очевидно, не любить.
Брайан Вілліс

2
Тільки підкреслив, що це дуже погано працює в браузері Safari iPad
Matthew Lock

1
Вибачте про те, що @MatthewLock Щойно я тестував свій IPad Air IOS 8.1 з останнім сафарі, і він працює на цьому. Я також зміг випробувати на crossbrowsertesting.com за допомогою iPad mini сітківки з Safari 7, і це, здається, теж працює нормально. Ось результати цього тесту. Чи можете ви надати версію iPad та Safari, яку ви використовуєте? Я хотів би спробувати отримати це виправлення якнайшвидшого або принаймні поставити коментар у відповідь, оскільки я знаю, що багато людей використовують це.
Брайан Вілліс

42

Ви показуєте лише один рядок, щоб ваш випадок використання обмежився лише цим. На всякий випадок, якщо у вас є кілька рядків, цей плагін - github Javascript-сітки - відмінно працює! Це змушує кожну панель розширюватися до найвищої панелі, надаючи потенційно різній висоті кожному рядку на основі найвищої панелі в цьому рядку. Це рішення jquery порівняно з css, але хотів рекомендувати його як альтернативний підхід.


1
Єдине рішення, яке дійсно працює, і воно не порушує чуйність
Артур Кейдзьор

Це дозволяє вам вказати, що стовпці повинні бути квадратними - або просто однакової висоти?
niico

@niico 14 - минуло деякий час, оскільки я використовував це, але в моєму застосуванні вимога полягає в тому, щоб елементи в кожному рядку були однакової висоти, але висота може змінюватись від рядка до рядка. Оскільки висота є функцією елементів у рядку, якщо висота вашого елемента дорівнює їх ширині, то вони повинні бути представлені у вигляді квадратів.
globalSchmidt

30

Якщо ви хочете зробити цю роботу в будь-якому браузері, використовуйте javascript:

$( document ).ready(function() {
    var heights = $(".panel").map(function() {
        return $(this).height();
    }).get(),

    maxHeight = Math.max.apply(null, heights);

    $(".panel").height(maxHeight);
});

1
Майте один div class = "рядок" зі змінною кількістю панелей кожного класу "col-md-4", який повинен містити мені 3 стовпчики та невідому кількість рядків, залежно від кількості елементів, які я хочу перелічити. Цей JS працював і вимагає мінімальних змін у моєму HTML / CSS, на відміну від різних CSS-речей, які я намагався. Єдине, що я змінив, це позначити всі мої панелі стовпців додатковим класом, тобто "панелі однакової висоти", а потім використовувати $ (". Панель з тією ж висотою") замість $ (". Панель")
nidalpres

1
Єдине рішення, яке спрацювало для мене після одного дня експериментів із css матеріалами.
Динозавр

1
Це хороше рішення, але .ready()це не той час, коли його називати - його слід закликати.load()
jave.web

1
@ jave.web Якщо ви вважаєте, що це хороше рішення, будь ласка, дайте йому великі пальці. Спасибі
paulalexandru

Використовуйте window.onload = function() {...function content above...}замість цього. Це працює краще.
Blackpanther0001

10

Я намагався багато пропозицій, зроблених у цій темі та на інших сторінках, але жодне рішення не працювало на 100% у всіх браузерах.

Тому я експериментував досить довго і придумав це. Повноцінне рішення для стовпчиків Bootstrap з рівною висотою за допомогою флексокса лише з 1 класом. Це працює у всіх основних браузерах IE10 +.

CSS:

.row.equal-cols {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

.row.equal-cols:before,
.row.equal-cols:after {
  display: block;
}

.row.equal-cols > [class*='col-'] {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}

.row.equal-cols > [class*='col-'] > * {
  -webkit-flex: 1 1 auto;
  -ms-flex: 1 1 auto;
  flex: 1 1 auto; 
}

HTML:

<div class="container">
  <div class="row equal-cols">
    <div class="col-sm-4">
      <div class="content"></div>
    </div>
    <div class="col-sm-4">
      <div class="content"></div>
    </div>
    <div class="col-sm-4">
      <div class="content"></div>
    </div>
  </div>
</div>

Для підтримки ще більше версій IE ви можете, наприклад, скористатися https://github.com/liabru/jquery-match-height та націлити всі дочірні стовпці .equal-cols. Подобається це:

// Create a check for IE9 (or any other specific browser).
if(IE9) {
  $(".row.equal-cols > [class*='col-']").matchHeight();
}

Без цього полізаповнення стовпці будуть вести себе як звичайні стовпці Bootstrap, так що це непоганий запасний варіант.


Це блискуче працювало для мене. Дякую!
randlet

8

Ви можете також використовувати inline-flex, який працює досить добре і може бути трохи чистішим, ніж змінювати кожен елемент рядка за допомогою CSS.

Для свого проекту я хотів, щоб у кожного ряду, у якого дочірні елементи були рамки, була однакова висота, щоб межі виглядали нерівними. Для цього я створив простий клас css.

.row.borders{
    display: inline-flex;
    width: 100%;
}

2
Хоча йому вдається зробити весь вміст у рядку однакової висоти; Це порушує чуйність Bootstrap.
Christine268


7

прискіпливе рішення jquery, якщо хтось зацікавлений. Просто переконайтесь, що всі ваші cols (el) мають загальне ім'я класу ... працює також чуйно, якщо ви прив'язуєте його до $ (window) .resize

function equal_cols(el)
{
    var h = 0;
    $(el).each(function(){
        $(this).css({'height':'auto'});
        if($(this).outerHeight() > h)
        {
            h = $(this).outerHeight();
        }
    });
    $(el).each(function(){
        $(this).css({'height':h});
    });
}

Використання

$(document).ready(function(){
   equal_cols('.selector');
});

Примітка: Ця публікація була відредагована відповідно до коментаря @Chris, що в коді було встановлено лише останню найвищу висоту $.each()функції


Це занижено - простий і невеликий, але змінить розмір усіх стовпців без необхідності мати фіксовану кількість стовпців підряд. Хороший!
Джордон

1
Це не працює, тому що ви встановлюєте останню найбільшу висоту в кожній функції. Якщо третій стовпчик є найвищим стовпцем, стовпці 1 і 2 не отримують потрібної висоти. Вам потрібно встановити останній рядок "$ (this) .css ({'height': h});" після кожної функції. Я зроблю редагування.
Кріс

7

Деякі з попередніх відповідей пояснюють, як зробити дівки однакової висоти, але проблема полягає в тому, що коли ширина занадто вузька, діви не будуть складатись, тому ви можете реалізувати їх відповіді з однією додатковою частиною. Для кожного з них ви можете використовувати вказане тут ім'я CSS на додаток до класу рядків, який ви використовуєте, тому div повинен виглядати так, якщо ви завжди хочете, щоб діви були поруч:

<div class="row row-eq-height-xs">Your Content Here</div>

Для всіх екранів:

.row-eq-height-xs {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display:         flex;
    flex-direction: row;
}

Бо коли ви хочете використовувати sm:

.row-eq-height-sm {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display:         flex;
    flex-direction: column;
}
@media (min-width:768px) {
    .row-eq-height-sm {
        flex-direction: row;
    }
}

Бо коли ви хочете керувати файлами:

.row-eq-height-md {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display:         flex;
    flex-direction: column;
}
@media (min-width:992px) {
    .row-eq-height-md {
        flex-direction: row;
    }
}

Бо коли ви хочете використовувати lg:

.row-eq-height-lg {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display:         flex;
    flex-direction: column;
}
@media (min-width:1200px) {
    .row-eq-height-md {
        flex-direction: row;
    }
}

EDIT На підставі коментаря, дійсно є більш просте рішення, але вам потрібно переконатися, що потрібно вказати інформацію стовпця від найбільшої потрібної ширини для всіх розмірів до xs (наприклад <div class="col-md-3 col-sm-4 col-xs-12">:

.row-eq-height {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
}

Ви зробили це набагато складніше, ніж потрібно було :) `Просто використовуйте, flex-wrap: wrap;тоді вам не потрібні всі окремі ... якщо ви конкретно не хочете їх.
Брайан Вілліс

це не вдається на iPad Safari
Matthew Lock

6

Я здивований, що не зміг знайти гідне рішення тут наприкінці 2018 року. Я пішов уперед і сам розібрався з рішенням Bootstrap 3, використовуючи флексбокс.

Чистий і простий приклад:

Приклад узгодженої ширини стовпців у Bootstrap 3

HTML

<div class="row row-equal">
    <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 col-equal">
        <p>Text</p>
    </div>
    <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 col-equal">
        <img src="//placehold.it/200x200">
    </div>
    <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 col-equal">
        <p>Text</p>
    </div>  
</div>

CSS

img {
  width: 100%;
}
p {
  padding: 2em;
}
@media (min-width: 768px) {
  .row-equal {
    display: flex;
    flex-wrap: wrap;
  }
  .col-equal {
    margin: auto;
  }
}

Переглянути робочу демонстрацію: http://jsfiddle.net/5kmtfrny/


5

Я знаю, що я запізнююсь, але тепер ви можете використовувати атрибут стилю "мінімальна висота", щоб досягти своєї мети.


5

Якщо хтось використовує завантажувальний інструмент 4 і шукає стовпчики однакової висоти, просто використовуйте row-eq-heightбатьківський діл

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="stylesheet" />
<div class="row row-eq-height">
  <div class="col-xs-4" style="border: 1px solid grey;">.row.row-eq-height &gt; .col-xs-4</div>
  <div class="col-xs-4" style="border: 1px solid grey;">.row.row-eq-height &gt; .col-xs-4<br>this is<br>a much<br>taller<br>column<br>than the others</div>
  <div class="col-xs-4" style="border: 1px solid grey;">.row.row-eq-height &gt; .col-xs-4</div>
</div>

Посилання: http://getbootstrap.com.vn/examples/equal-height- Column/


3

ось моє рішення (скомпільований CSS):

.row.row-xs-eq {
  display: table;
  table-layout: fixed;
  margin: 0;
}

.row.row-xs-eq::before {
  content: none;
}

.row.row-xs-eq::after {
  content: none;
}

.row.row-xs-eq > [class^='col-'] {
  display: table-cell;
  float: none;
  padding: 0;
}

@media (min-width: 768px) {
  .row.row-sm-eq {
    display: table;
    table-layout: fixed;
    margin: 0;
  }

  .row.row-sm-eq::before {
    content: none;
  }

  .row.row-sm-eq::after {
    content: none;
  }

  .row.row-sm-eq > [class^='col-'] {
    display: table-cell;
    float: none;
    padding: 0;
  }
}

@media (min-width: 992px) {
  .row.row-md-eq {
    display: table;
    table-layout: fixed;
    margin: 0;
  }

  .row.row-md-eq::before {
    content: none;
  }

  .row.row-md-eq::after {
    content: none;
  }

  .row.row-md-eq > [class^='col-'] {
    display: table-cell;
    float: none;
    padding: 0;
  }
}

@media (min-width: 1200px) {
  .row.row-lg-eq {
    display: table;
    table-layout: fixed;
    margin: 0;
  }

  .row.row-lg-eq::before {
    content: none;
  }

  .row.row-lg-eq::after {
    content: none;
  }

  .row.row-lg-eq > [class^='col-'] {
    display: table-cell;
    float: none;
    padding: 0;
  }
}

Так ваш код виглядатиме так:

<div class="row row-sm-eq">
  <!-- your old cols definition here -->
</div>

В основному це та сама система, яку ви використовуєте для .col-*класів з тією різницею, яку вам потрібно застосувати.row-* класи до самого рядка.

З .row-sm-eqколонкою буде покладена на XS екранах. Якщо вам не потрібно їх складати на будь-які екрани, які ви можете використовувати .row-xs-eq.

Версія SASS, яку ми фактично використовуємо:

.row {
  @mixin row-eq-height {
    display: table;
    table-layout: fixed;
    margin: 0;

    &::before {
      content: none;
    }

    &::after {
      content: none;
    }

    > [class^='col-'] {
      display: table-cell;
      float: none;
      padding: 0;
    }
  }

  &.row-xs-eq {
    @include row-eq-height;
  }

  @media (min-width: $screen-sm-min) {
    &.row-sm-eq {
      @include row-eq-height;
    }
  }

  @media (min-width: $screen-md-min) {
    &.row-md-eq {
      @include row-eq-height;
    }
  }

  @media (min-width: $screen-lg-min) {
    &.row-lg-eq {
      @include row-eq-height;
    }
  }
}

Демонстраційна демонстрація


Примітка: змішування .col-xs-12та .col-xs-6всередині одного ряду не працюватимуть належним чином.


Це добре. Моє рішення те саме. І є можливість мати стовпці однакової висоти зі стандартними зазорами Bootstrap 30px між стовпцями з використанням border-spacingта від'ємними полями.
макс

3

Виникає проблема використання рішення 1 під час застосування його лише у стовпцях у рядках. Хочеться покращити рішення 1.

 [class^="col-"]:not([class*="-12"]){
      margin-bottom: -99999px;
      padding-bottom: 99999px;
  }

(Вибачте, я не можу коментувати відповідь Popnoodles. У мене недостатньо репутації)


2

Найкраще там:

Рефлекс Github - Док

Працює з завантажувальним пристроєм

Оновлення:

  1. Включіть CSS
  2. Оновіть свій код:

/*!
 *
 * Reflex v1.0
 *
 * Reflex is a flexbox grid which provides a way to take advantage of emerging
 * flexbox support while providing a fall back to inline-block on older browsers
 *
 * Built by Lee Jordan G.C.S.E.
 * email: ldjordan@gmail.com
 * github: https://github.com/leejordan
 *
 * Structure and calculations are inspired by twitter bootstrap
 *
 */
.reflex-order-12 {
  -webkit-order: 12;
  -ms-flex-order: 12;
  order: 12;
}
.reflex-order-11 {
  -webkit-order: 11;
  -ms-flex-order: 11;
  order: 11;
}
.reflex-order-10 {
  -webkit-order: 10;
  -ms-flex-order: 10;
  order: 10;
}
.reflex-order-9 {
  -webkit-order: 9;
  -ms-flex-order: 9;
  order: 9;
}
.reflex-order-8 {
  -webkit-order: 8;
  -ms-flex-order: 8;
  order: 8;
}
.reflex-order-7 {
  -webkit-order: 7;
  -ms-flex-order: 7;
  order: 7;
}
.reflex-order-6 {
  -webkit-order: 6;
  -ms-flex-order: 6;
  order: 6;
}
.reflex-order-5 {
  -webkit-order: 5;
  -ms-flex-order: 5;
  order: 5;
}
.reflex-order-4 {
  -webkit-order: 4;
  -ms-flex-order: 4;
  order: 4;
}
.reflex-order-3 {
  -webkit-order: 3;
  -ms-flex-order: 3;
  order: 3;
}
.reflex-order-2 {
  -webkit-order: 2;
  -ms-flex-order: 2;
  order: 2;
}
.reflex-order-1 {
  -webkit-order: 1;
  -ms-flex-order: 1;
  order: 1;
}
.reflex-order-0 {
  -webkit-order: 0;
  -ms-flex-order: 0;
  order: 0;
}
.reflex-container {
  display: inline-block;
  display: -webkit-flex;
  display: flex;
  zoom: 1;
  *display: inline;
  margin: 0;
  padding: 0;
  position: relative;
  width: 100%;
  letter-spacing: -0.31em;
  *letter-spacing: normal;
  word-spacing: -0.43em;
  list-style-type: none;
}
.reflex-container *,
.reflex-container:before,
.reflex-container:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  max-width: 100%;
  letter-spacing: normal;
  word-spacing: normal;
  white-space: normal;
}
.reflex-container *:before,
.reflex-container *:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
[class*="reflex-col-"] {
  width: 100%;
  vertical-align: top;
  position: relative;
  display: inline-block;
  display: -webkit-flex;
  display: flex;
  zoom: 1;
  *display: inline;
  text-align: left;
  text-align: start;
}
.reflex-item {
  display: block;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
}
_:-ms-fullscreen,
:root .reflex-item {
  width: 100%;
}
.reflex-col-12 {
  width: 100%;
  *width: 99.9%;
}
.reflex-col-11 {
  width: 91.66666666666666%;
  *width: 91.56666666666666%;
}
.reflex-col-10 {
  width: 83.33333333333334%;
  *width: 83.23333333333335%;
}
.reflex-col-9 {
  width: 75%;
  *width: 74.9%;
}
.reflex-col-8 {
  width: 66.66666666666666%;
  *width: 66.56666666666666%;
}
.reflex-col-7 {
  width: 58.333333333333336%;
  *width: 58.233333333333334%;
}
.reflex-col-6 {
  width: 50%;
  *width: 49.9%;
}
.reflex-col-5 {
  width: 41.66666666666667%;
  *width: 41.56666666666667%;
}
.reflex-col-4 {
  width: 33.33333333333333%;
  *width: 33.23333333333333%;
}
.reflex-col-3 {
  width: 25%;
  *width: 24.9%;
}
.reflex-col-2 {
  width: 16.666666666666664%;
  *width: 16.566666666666663%;
}
.reflex-col-1 {
  width: 8.333333333333332%;
  *width: 8.233333333333333%;
}
@media (min-width: 480px) {
  .reflex-col-xs-12 {
    width: 100%;
    *width: 99.9%;
  }
  .reflex-col-xs-11 {
    width: 91.66666666666666%;
    *width: 91.56666666666666%;
  }
  .reflex-col-xs-10 {
    width: 83.33333333333334%;
    *width: 83.23333333333335%;
  }
  .reflex-col-xs-9 {
    width: 75%;
    *width: 74.9%;
  }
  .reflex-col-xs-8 {
    width: 66.66666666666666%;
    *width: 66.56666666666666%;
  }
  .reflex-col-xs-7 {
    width: 58.333333333333336%;
    *width: 58.233333333333334%;
  }
  .reflex-col-xs-6 {
    width: 50%;
    *width: 49.9%;
  }
  .reflex-col-xs-5 {
    width: 41.66666666666667%;
    *width: 41.56666666666667%;
  }
  .reflex-col-xs-4 {
    width: 33.33333333333333%;
    *width: 33.23333333333333%;
  }
  .reflex-col-xs-3 {
    width: 25%;
    *width: 24.9%;
  }
  .reflex-col-xs-2 {
    width: 16.666666666666664%;
    *width: 16.566666666666663%;
  }
  .reflex-col-xs-1 {
    width: 8.333333333333332%;
    *width: 8.233333333333333%;
  }
}
@media (min-width: 768px) {
  .reflex-col-sm-12 {
    width: 100%;
    *width: 99.9%;
  }
  .reflex-col-sm-11 {
    width: 91.66666666666666%;
    *width: 91.56666666666666%;
  }
  .reflex-col-sm-10 {
    width: 83.33333333333334%;
    *width: 83.23333333333335%;
  }
  .reflex-col-sm-9 {
    width: 75%;
    *width: 74.9%;
  }
  .reflex-col-sm-8 {
    width: 66.66666666666666%;
    *width: 66.56666666666666%;
  }
  .reflex-col-sm-7 {
    width: 58.333333333333336%;
    *width: 58.233333333333334%;
  }
  .reflex-col-sm-6 {
    width: 50%;
    *width: 49.9%;
  }
  .reflex-col-sm-5 {
    width: 41.66666666666667%;
    *width: 41.56666666666667%;
  }
  .reflex-col-sm-4 {
    width: 33.33333333333333%;
    *width: 33.23333333333333%;
  }
  .reflex-col-sm-3 {
    width: 25%;
    *width: 24.9%;
  }
  .reflex-col-sm-2 {
    width: 16.666666666666664%;
    *width: 16.566666666666663%;
  }
  .reflex-col-sm-1 {
    width: 8.333333333333332%;
    *width: 8.233333333333333%;
  }
}
@media (min-width: 992px) {
  .reflex-col-md-12 {
    width: 100%;
    *width: 99.9%;
  }
  .reflex-col-md-11 {
    width: 91.66666666666666%;
    *width: 91.56666666666666%;
  }
  .reflex-col-md-10 {
    width: 83.33333333333334%;
    *width: 83.23333333333335%;
  }
  .reflex-col-md-9 {
    width: 75%;
    *width: 74.9%;
  }
  .reflex-col-md-8 {
    width: 66.66666666666666%;
    *width: 66.56666666666666%;
  }
  .reflex-col-md-7 {
    width: 58.333333333333336%;
    *width: 58.233333333333334%;
  }
  .reflex-col-md-6 {
    width: 50%;
    *width: 49.9%;
  }
  .reflex-col-md-5 {
    width: 41.66666666666667%;
    *width: 41.56666666666667%;
  }
  .reflex-col-md-4 {
    width: 33.33333333333333%;
    *width: 33.23333333333333%;
  }
  .reflex-col-md-3 {
    width: 25%;
    *width: 24.9%;
  }
  .reflex-col-md-2 {
    width: 16.666666666666664%;
    *width: 16.566666666666663%;
  }
  .reflex-col-md-1 {
    width: 8.333333333333332%;
    *width: 8.233333333333333%;
  }
}
@media (min-width: 1200px) {
  .reflex-col-lg-12 {
    width: 100%;
    *width: 99.9%;
  }
  .reflex-col-lg-11 {
    width: 91.66666666666666%;
    *width: 91.56666666666666%;
  }
  .reflex-col-lg-10 {
    width: 83.33333333333334%;
    *width: 83.23333333333335%;
  }
  .reflex-col-lg-9 {
    width: 75%;
    *width: 74.9%;
  }
  .reflex-col-lg-8 {
    width: 66.66666666666666%;
    *width: 66.56666666666666%;
  }
  .reflex-col-lg-7 {
    width: 58.333333333333336%;
    *width: 58.233333333333334%;
  }
  .reflex-col-lg-6 {
    width: 50%;
    *width: 49.9%;
  }
  .reflex-col-lg-5 {
    width: 41.66666666666667%;
    *width: 41.56666666666667%;
  }
  .reflex-col-lg-4 {
    width: 33.33333333333333%;
    *width: 33.23333333333333%;
  }
  .reflex-col-lg-3 {
    width: 25%;
    *width: 24.9%;
  }
  .reflex-col-lg-2 {
    width: 16.666666666666664%;
    *width: 16.566666666666663%;
  }
  .reflex-col-lg-1 {
    width: 8.333333333333332%;
    *width: 8.233333333333333%;
  }
}
.reflex-wrap {
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
}
.reflex-wrap-reverse {
  -webkit-flex-wrap: wrap-reverse;
  flex-wrap: wrap-reverse;
}
.reflex-direction-row-reverse {
  -webkit-flex-direction: row-reverse;
  flex-direction: row-reverse;
}
.reflex-direction-column {
  -webkit-flex-direction: column;
  flex-direction: column;
}
.reflex-direction-column-reverse {
  -webkit-flex-direction: column-reverse;
  flex-direction: column-reverse;
}
.reflex-align-start {
  -webkit-align-items: flex-start;
  align-items: flex-start;
}
.reflex-align-end {
  -webkit-align-items: flex-end;
  align-items: flex-end;
}
.reflex-align-end [class*="reflex-col-"] {
  vertical-align: bottom;
}
.reflex-align-center {
  -webkit-align-items: center;
  align-items: center;
}
.reflex-align-center [class*="reflex-col-"] {
  vertical-align: middle;
}
.reflex-align-baseline {
  -webkit-align-items: baseline;
  align-items: baseline;
}
.reflex-align-baseline [class*="reflex-col-"] {
  vertical-align: baseline;
}
.reflex-align-content-start {
  -webkit-align-content: flex-start;
  align-content: flex-start;
}
.reflex-align-content-end {
  -webkit-align-content: flex-end;
  align-content: flex-end;
}
.reflex-align-content-end [class*="reflex-col-"] {
  vertical-align: bottom;
}
.reflex-align-content-center {
  -webkit-align-content: center;
  align-content: center;
}
.reflex-align-content-space-between {
  -webkit-align-content: space-between;
  align-content: space-between;
}
.reflex-align-content-space-around {
  -webkit-align-content: space-around;
  align-content: space-around;
}
.reflex-align-self-stretch {
  -webkit-align-self: stretch;
  align-self: stretch;
}
.reflex-align-self-start {
  -webkit-align-self: flex-start;
  align-self: flex-start;
}
.reflex-align-self-end {
  -webkit-align-self: flex-end;
  align-self: flex-end;
  vertical-align: bottom;
}
.reflex-align-self-center {
  -webkit-align-self: center;
  align-self: center;
  vertical-align: middle;
}
.reflex-align-self-baseline {
  -webkit-align-self: baseline;
  align-self: baseline;
  vertical-align: baseline;
}
.reflex-justify-start {
  text-align: left;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
}
.reflex-justify-end {
  text-align: right;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}
.reflex-justify-center {
  text-align: center;
  -webkit-justify-content: center;
  justify-content: center;
}
.reflex-justify-space-between {
  text-align: justify;
  -moz-text-align-last: justify;
  text-align-last: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}
.reflex-justify-space-around {
  text-align: justify;
  -moz-text-align-last: justify;
  text-align-last: justify;
  -webkit-justify-content: space-around;
  justify-content: space-around;
}
.reflex-item-margin-sm {
  margin: 0 0.25em 0.5em;
}
.reflex-item-margin-md {
  margin: 0 0.5em 1em;
}
.reflex-item-margin-lg {
  margin: 0 1em 2em;
}
.reflex-item-content-margin-sm * {
  margin-right: 0.25em;
  margin-left: 0.25em;
}
.reflex-item-content-margin-md * {
  margin-right: 0.5em;
  margin-left: 0.25em;
}
.reflex-item-content-margin-lg * {
  margin-right: 1em;
  margin-left: 1em;
}
.reflex-img {
  display: inline-block;
  display: -webkit-flex;
  display: flex;
  zoom: 1;
  *display: inline;
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  margin-left: 0;
  margin-right: 0;
  max-width: 100%;
  width: 100%;
  height: auto;
}
.reflex-item-footer {
  margin-top: auto;
  margin-left: 0;
  margin-right: 0;
}
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="reflex-container reflex-wrap">
  <div class="reflex-col-xs-12 reflex-col-sm-4 panel" style="background-color: red">
  some content
  </div>
  <div class="reflex-col-xs-6 reflex-col-sm-4 panel" style="background-color: yellow">
  kittenz
  <img src="http://upload.wikimedia.org/wikipedia/en/1/13/Matrona.jpg">
  </div>
  <div class="reflex-col-xs-6 reflex-col-sm-4 panel" style="background-color: blue">
  some more content
  </div>
</div>


Ласкаво просимо до переповнення стека! Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. Див. Як написати гарну відповідь .
ByteHamster

2

Ось мій метод, я використовував flex з деякими змінами в медіа-запитах.

  @media (min-width: 0px) and (max-width: 767px) {
  .fsi-row-xs-level {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .fsi-row-sm-level {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .fsi-row-md-level {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
}
@media (min-width: 1200px) {
  .fsi-row-lg-level {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
}

потім додали до батьківські класи, які були потрібні.

<div class="row fsi-row-lg-level fsi-row-md-level">
<div class="col-sm-4">column 1</div>
<div class="col-sm-4">column 2</div>
<div class="col-sm-4">column 3</div>
</div>

Я використовую чуйні точки перерви, тому що флюс зазвичай перешкоджає стандартному реагуванню на завантажувальний стандарт.


2

Я використовую це супер просте рішення clearfix, яке не має жодних побічних ефектів.

Ось приклад на AngularJS:

<div ng-repeat-start="item in list">
    <div class="col-lg-4 col-md-6 col-sm-12 col-xs-12"></div>
</div>
<div ng-repeat-end>
    <div ng-if="$index % 3 == 2" class="clearfix visible-lg"></div>
    <div ng-if="$index % 2 == 1" class="clearfix visible-md"></div>
</div>

І ще один приклад на PHP:

<?php foreach ($list as $i => $item): ?>
    <div class="col-lg-4 col-md-6 col-sm-12 col-xs-12"></div>
    <div class="clearfix visible-md"></div>
    <?php if ($i % 2 === 1): ?>
        <div class="clearfix visible-lg"></div>
    <?php endif; ?>
<?php endforeach; ?>

Однак це не робить ваші стовпці однаковою висотою.
skerit

1
Для мене, які хочуть мати стовпчики на одній висоті / місці в ряд, це рішення
Michal - wereda-net

2

Для тих, хто шукає швидке, просте рішення - якщо у вас порівняно послідовний набір вмісту блоку, встановлення мінімальної висоти на діві, який трохи більше, ніж найбільший блок, може бути простішим у виконанні.

.align-box {
    min-height: 400px;
}

2

.row.container-height {
	overflow: hidden; 
}

.row.container-height > [class*="col-"]{
    margin-bottom: -99999px;
    padding-bottom: 99999px;
}

де .container-height - клас стилів, який потрібно додати до стилю .row, до якого всі його .col * діти мають однакову висоту.

Застосування цих стилів лише до певного .row (з .container-висотою, як у прикладі) також уникає застосування поля та переповнення накладок до всіх .col *.


2

Я шукав рішення тієї ж проблеми, і знайшов, що просто працював !! - майже без додаткового коду ..

див. https://medium.com/wdstack/bootstrap-equal-height-columns-d07bc934eb27 для гарного обговорення, а з респонентом, який ви хочете внизу, за посиланням.

https://www.codeply.com/go/EskIjvun4B

це був правильний чуйний спосіб для мене ... цитата: ... 3 - Використовуйте flexbox (найкраще!)

Станом на 2017 рік, найкращий (і найпростіший) спосіб зробити стовпчики рівних висот у чуйному дизайні - це використання флешбоку CSS3.

.row.display-flex {
  display: flex;
  flex-wrap: wrap;
}
.row.display-flex > [class*='col-'] {
  display: flex;
  flex-direction: column;
}

і просто використовувати:

div class="container">
   <div class="row display-flex .... etc..

1
@media (min-width: @screen-sm-min) {
    div.equal-height-sm {
        display: table;


        > div[class^='col-'] {
            display: table-cell;
            float: none;
            vertical-align: top;
        }
    }
}

<div class="equal-height-sm">
    <div class="col-xs-12 col-sm-7">Test<br/>Test<br/>Test</div>
    <div class="col-xs-12 col-sm-5">Test</div>
</div>

Приклад:

https://jsfiddle.net/b9chris/njcnex83/embedded/result/

Адаптовано з кількох відповідей тут. Відповіді на основі флешбоку - це правильний шлях, коли IE8 і 9 загинуть, і коли Android 2.x помер, але це неправда в 2015 році, і, ймовірно, не буде в 2016. IE8 і 9 все ще складають 4- 6% використання в залежності від того, як ви вимірюєте, а для багатьох корпоративних користувачів це набагато гірше. http://caniuse.com/#feat=flexbox

display: table, display: table-cellТрюк більш зворотна сумісність - і одна велика річ , єдиний серйозна проблема сумісності є проблемою Safari , де це сила box-sizing: border-box, що - то вже застосовується в теги Bootstrap. http://caniuse.com/#feat=css-table

Ви, очевидно, можете додати більше класів, які роблять подібні речі, наприклад .equal-height-md. Я прив’язав їх до divs для невеликої вигоди від продуктивності при моєму обмеженому використанні, але ви можете видалити тег, щоб зробити його більш узагальненим, як і решта Bootstrap.

Зауважте, що jsfiddle тут використовує CSS, і так, речі, які менше надали б менше, жорстко кодуються у зв'язаному прикладі. Наприклад, @ screen-sm-min замінено тим, що буде вставлено менше - 768px.


1

Якщо це має сенс у вашому контексті, ви можете просто додати порожній роздільник у 12 стовпців після кожного перерви, який виконує функції дільника, який обіймає нижню частину найвищої комірки у вашому рядку.

<div class="row">
   <div class="col-xs-6">Some content</div>
   <div class="col-xs-6">
      Lots of content! Lots of content! Lots of content! Lots of content! Lots of content! 
   </div>
   <div id="spacer-div" class="col-xs-12"></div>
   <div class="col-xs-6">More content...</div>
</div><!--this You forgot to close -->

Сподіваюся, це допомагає!


Це не відповідає на запитання, яке він задав!
Еллісан

0

Думаю, що я просто додам, що відповідь, надану Dr.Flink, також може бути застосована до Bootstrap 3 form-horizontal блоку - що може бути дуже зручно, якщо ви хочете використовувати кольори фону для кожної комірки. Для того, щоб це працювало для форм завантаження, вам потрібно буде загортати вміст форми, який просто служить для копіювання структури, подібної до таблиці.

Наведений нижче приклад також пропонує CSS, який демонструє додатковий медіа-запит, що дозволяє Bootstrap 3 просто поглинати та робити це нормально на менших екранах. Це також працює в IE8 +.

Приклад:

<form class="form-horizontal" role="form">

  <div class="form-wrapper">
    <div class="form-group">
      <label class="col-xs-12 col-sm-2 control-label">My Label</label>
      <div class="col-xs-12 col-sm-10">
        Some content
      </div>
    </div>
  </div>

</form>
.form-wrapper {
  display: table;
}

.form-wrapper .form-group {
  display: table-row;
}

.form-wrapper .form-group .control-label {
  display: table-cell;
  float: none;
}

.form-wrapper .form-group label + div {
  display: table-cell;
  float: none;
}

@media (max-width: 768px) {
  .form-wrapper {
    display: inherit;
  }
  .form-wrapper .form-group {
    display: block;
  }
  .form-wrapper .form-group .control-label {
    display: inherit;
  }
  .form-wrapper .form-group label + div {
    display: inherit;
  }
}

0

Спробуйте це зробити через flex-box

.container {
	display: flex;
	padding-bottom: 50px;
}
.col {
	background: blue;
	padding: 30px;
}

.col.center {
	background: red;
	height: 100px;
	margin-bottom: -50px;
}
<div class="container">
  <div class="col">Left</div>
  <div class="col center">Center</div>
  <div class="col">Right</div>
</div>

Live JSFiddle - https://jsfiddle.net/grinmax_/spsn4fnq/


0

Так, так, Bootstrap 4 робить усі кола в рядку однаковою висотою, однак, якщо ви створюєте межу навколо вмісту всередині рядка, ви можете виявити, що він здається, що колпи не мають висоти!

Коли я застосував height: 100%до елемента всередині кола, я виявив, що втратив запас.

Моє рішення - використовувати набивання на колезі div (замість поля на внутрішньому елементі). Так:

<div class="container">
    <div class="row">
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
        <div class="col-lg-4 col-md-6 col-12 py-4">
            <div class="h-100 border round">
                        ...
            </div>
        </div>
    </div>
</div>

Наведений вище приклад коду використовує Bootstrap 4.1 для створення набору з дев'яти полів з облямівкою


0

HTML

<div class="container-fluid">
    <div class="row-fluid">
        <div class="span4 option2">
            <p>left column </p>
            <p>The first column has to be the longest The first column has to be the longes</p>
        </div>

        <div class="span4 option2">
            <p>middle column</p>
        </div>

        <div class="span4 option2">
            <p>right column </p>
            <p>right column </p>
            <p>right column </p>
            <p>right column </p>
            <p>right column </p>
        </div>
    </div>
</div>

CSS

.option2 { background: red; border: black 1px solid; color: white; }

JS

$('.option2').css({
    'height': $('.option2').height()
});

0

19.03.2019

** Розв’язання рівних висот Bootstrap 4 **

Bootstrap Utilities / flex на рівну висоту

Живий приклад у Codepen

Рівня висоти за класом завантаження з встановленим батьківським ділом heightабоmin-height

<div class="d-flex align-content-stretch flex-wrap" style="min-height: 200px">
    <div>Flex height test text for example , Flex height test text for example </div>
    <div>Flex item</div>
    <div>Flex item</div>
    <div>Flex item</div>
 </div>


3
Чому ви даєте мені негативний голос. ви можете зробити коментар до цього?
доктор медичних наук Ашик

-1

Ви можете загортати стовпчики всередині div

<div class="row">
<div class="col-md-12>
  <div class="col-xs-12 col-sm-4 panel" style="background-color: red">
  some content
  </div>
  <div class="col-xs-6 col-sm-4 panel" style="background-color: yellow">
  kittenz
  <img src="http://placekitten.com/100/100">
  </div>
  <div class="col-xs-6 col-sm-4 panel" style="background-color: blue">
  some more content
  </div>
</div>
</div>

Не працював для мене кнопкою в одній із колон.
Рей Хантер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.