2013-05-16 7 views
21

У меня есть два ребенок <div> элементов внутри родительского контейнера <div>, как показано ниже:сделать ребенок DIVS высоты самого высокого ребенка

<div class="row"> 
    <div class="item"> 
     <p>Sup?</p> 
    </div> 
    <div class="item"> 
     <p>Sup?</p> 
     <p>Wish that other guy was the same height as me</p> 
    </div> 
</div> 

Я пробовал следующий CSS:

.item { 
    background: rgba(0,0,0,0.1); 
    display: inline-block; 
} 

.row { 
    border: 1px solid red; 
} 

Как я могу получить оба ребенка (div.item) должны быть высотой самого высокого ребенка?

jsFiddle: http://jsfiddle.net/7m4f7/

+0

Этот вопрос был задан множество раз , См. Этот вопрос. http://stackoverflow.com/questions/16592597/issue-with-responsive-columns-having-equal-height – Cam

+0

Простой. Легко. [Столбцы равной высоты с помощью Flexbox] (http://stackoverflow.com/a/33815389/3597276). –

ответ

13

Одно из решений состоит в изменении значения дисплея от inline-block к table-cell для потомков div.item элементов:

.row { 
    border: 1px solid red; 
    display: table; 
    border-spacing: 20px; /* For controlling spacing between cells... */ 
} 
.item { 
    background: rgba(0,0,0,0.1); 
    display: table-cell; 
} 

Example

+0

Осторожно, table-cell является css3 и не работает во всех браузерах. – Cam

+8

Фактически значение «table-cell» было введено в [Спецификация CSS 2.1] (http://www.w3.org/TR/CSS2/visuren.html#display-prop) – Yana

+2

Пожалуйста, добавьте отображение: table and border- промежуток: 20px 20px, чтобы вы в своей скрипке, делает столбцы более очевидными, спасибо! http://jsfiddle.net/audetwebdesign/7m4f7/5/ –

6

Другим решением является использование Flexbox: http://jsfiddle.net/7m4f7/4/

.item { 
    background: rgba(0,0,0,0.1); 
    -webkit-box-flex: 1; 
    -moz-box-flex: 1; 
    -webkit-flex: 1; 
    -ms-flex: 1; 
    flex: 1; 
} 

.row { 
    border: 1px solid red; 
    display: -webkit-box; 
    display: -moz-box; 
    display: -webkit-flexbox; 
    display: -ms-flexbox; 
    display: -webkit-flex; 
    display: flex; 
} 

Однако поддержка ограничена (но становится лучше!) См http://caniuse.com/flexbox

В противном случае вы должны использовать JavaScript, чтобы установить высоту вручную.

+2

, если он работает, предположим, что у меня есть много дочерних элементов, которые были автоматически разделены на разные строки, когда я использовал 'inline-block', но теперь все это заполняется в одной строке. Есть ли для этого работа. – akabhirav

+0

@akabhirav, yes - использовать 'flex-wrap: wrap; flex-direction: row; ' – crishoj

6

версия JQuery: FIDDLE

var maxheight = 0; 

$('div div.y').each(function() { 
    maxheight = ($(this).height() > maxheight ? $(this).height() : maxheight); 
}); 

$('div div.y').height(maxheight); 

EDIT: Просто заметил, что вы не имеем дело с высотой <div> годов, но <p> 's

Смежные вопросы