Равная высота в штучной упаковке с липким внутренним колонтитулом с Bootstrap 3

Я уже несколько дней пытаюсь сделать N блоков с фиксированной шириной и минимальной высотой, чтобы иметь одинаковую высоту самого высокого блока, но все решения, которые я нашел, не сработали, даже самая последняя попытка, которая была разработан и протестирован как совместимый с Bootstrap.

Текущая разметка HTML:

<div id="modules">

    <div class="col-lg-3 col-md-3 col-sm-5 col-xs-12 module">

        <div class="panel panel-primary">

            <div class="panel-heading">Hello World</div>

            <div class="panel-body">

                It says "Hello World!"

                <hr />

                <div class="options pull-right">

                    <ul>

                        <li>

                            <span class="fa fa-remove"></span>

                            <a href="#">Remove</a>

                        </li>

                        <li>

                            <span class="fa fa-gear"></span>

                            <a href="/management/projects/modules/configure/project/1/module/1">Configure</a>

                        </li>

                    </ul>

                </div>

            </div>

        </div>

    </div>

</div>

Каждый .module - это отдельная коробка.

И та часть, которая имеет значение в самом последнем CSS:

#modules {
  overflow: hidden;
}

.module {
  margin: 10px;
  margin-bottom: -99999px;
  padding: 0;
  padding-bottom: 99999px;
}

Я пересмотрел CSS и, хотя существуют другие правила, влияющие на определения класса Bootstrap по умолчанию, я только меняю цвета фона и текста, что не имеет смысла не работать.

Но отрендеренный вывод...

Текст заполнителя Это говорит "Hello World!" это текст, который заставляет прямоугольник расти вертикально, и только несколько коробок имеют большие тексты, поэтому они должны иметь одинаковую высоту.

Кроме того, #options, если они присутствуют (варьируется от элемента к элементу), должны придерживаться нижней части каждого блока, чтобы после них не было большого пустого пространства. Когда (и если) это станет возможным, я бы, вероятно, удалил <hr />

Можно ли достичь, желательно, но не ограничиваясь этим, без JavaScript?

1 ответ

Вы можете достичь этого с помощью JavaScript. Узнайте самую большую высоту ваших блоков и сделайте так, чтобы все они были на одной высоте с самой большой.

Вот код:

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

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

    $(".module").height(maxHeight);
});
Другие вопросы по тегам