2016-03-09 4 views
0

Я хотел бы установить равные высоты для всех предметов. Я в настоящее время использую этот пример:Равные высоты в строке

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

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

    $(".well").height(maxHeight); 

Основываясь на этом вопросе Same height column bootstrap 3 row responsive

Я хотел бы применить это на каждый ряд основе, так как некоторые высоты в настоящее время слишком высока для строк, которые не нуждаются в так быть установленным.

+0

ли это сделать с помощью JQuery? Поскольку «flexbox» [широко поддерживается] (https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes) с тех пор (2014). – Roy

+0

Check @Popnoodles answer [здесь] (http://stackoverflow.com/questions/19695784/how-can-i-make-bootstrap-columns-all-the-same-height) – gugol

ответ

1

ради примеров Давайте предположим, что вы из положить ваш HTML с помощью цикла PHP (если нет, то вы можете сим петля, хотя элемен ты присваивают класс) тот же принцип применяется.

РНР Пример вывода HTML

<?php foreach($array as $k => $v): ?> 
     <?php if($k % (4) == 0) $class++; ?> 

     <div class="row-num-<?php echo $class ?>"> 
      // div content variable height 
     </div> 
    <?php endforeach; ?> 

JQuery Установка одинаковой высоты для каждой строки, используя существующий код

 var totalFrames = $('div[class*=row-num-]').length; 
     for (var i = 1, l = totalFrames; i < l; i++) { 
      var heights = $(".row-num-"+i).map(function() { 
        return $(this).height(); 
       }).get(), 

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

      $(".row-num-"+i).height(maxHeight); 
     } 

Это предполагает вашу строку 4 elems в ширину. Вы можете установить это или динамически рассчитать его в зависимости от вашего использования. В jQuery мы прокручиваем все элементы с классом, например row-num-, тогда мы нацеливаем каждый, задавая высоту. Они будут иметь один и тот же класс каждые четыре элемента. Он продолжается до тех пор, пока не будет достигнут текущий счет этого имени класса.

DEMOhttps://jsfiddle.net/DTcHh/18026/

+0

Это работает безупречно. Единственная проблема, с которой я столкнулся, заключается в том, что она не реагирует, поскольку столбцы не всегда будут шириной 4. –

+0

Это может быть отзывчивым. Это число может быть рассчитано динамически. Вы также можете поместить это в функцию и вызвать на изменение размера окна. Я не знаю вашу настройку, столбцы идут по всей ширине страницы или просто содержатся внутри небольшого div внутри страницы. Мой код будет соответствовать вашим потребностям. Это доказательство концепции. – Vector

3

хорошо его можно с помощью CSS также, если вы используете display:flex на родительский DIV, то все внутренние DIV будет идти с той же высоты в той же строке, но если его потребность в JQuery затем использовать этот

КОД

var maxHeight; 
$(".well").each(function(){ 
    if($(this).height > maxHeight){ 
    maxHeight = $(this).height;// will assign the highest height to this 
    } 
}) 
$('.well').css('height',maxHeight); 

всех ДИВ будут иметь одинаковую высоту в соответствии с высочайшего размером DIV

+0

Кажется, что не работает. Он не устанавливает высоты. –

+0

он должен определенно работать, я использую его во многих местах, поэтому, пожалуйста, поделитесь своими кодами. –

+0

Спасибо. Вот пример этого не работает для меня. Https://jsfiddle.net/DTcHh/18022/ –

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