Использовать jQuery/CSS, чтобы найти самый высокий из всех элементов [дубликат]
Возможные Дубликаты:
CSS-столбцы равной высоты?
у меня есть 3 ДИВС.
такой:
<div class="features"></div>
<div class="features"></div>
<div class="features"></div>
Они будут заполнены текстом. Я не знаю, насколько сильно. Дело в том, что все они должны быть одинаковой высоты.
Как я могу использовать jQuery (или CSS), чтобы найти самый высокий из DIV и установить два других на ту же высоту, создавая 3 равные высоты Див.
это возможно?
3 ответов:
вы не можете легко выбрать по высоте или сравнить в CSS, но jQuery и несколько итераций должны легко решить эту проблему. Мы пройдем через каждый элемент и отследим самый высокий элемент, затем мы снова зациклимся и установим высоту каждого элемента как самую высокую (working JSFiddle):
$(document).ready(function() { var maxHeight = -1; $('.features').each(function() { maxHeight = maxHeight > $(this).height() ? maxHeight : $(this).height(); }); $('.features').each(function() { $(this).height(maxHeight); }); });[добавление]
Шерифдерек создал JSFiddle для этого решения в адаптивной сетке. Спасибо!
[Версия 2]
вот более чистая версия с использованием функционального программирования:
$(document).ready(function() { // Get an array of all element heights var elementHeights = $('.features').map(function() { return $(this).height(); }).get(); // Math.max takes a variable number of arguments // `apply` is equivalent to passing each height as an argument var maxHeight = Math.max.apply(null, elementHeights); // Set each height to the max height $('.features').height(maxHeight); });[версия 3-без jQuery]
вот обновленная версия, которая не использует jQuery (работает JSFiddle):
var elements = document.getElementsByClassName('features'); var elementHeights = Array.prototype.map.call(elements, function(el) { return el.clientHeight; }); var maxHeight = Math.max.apply(null, elementHeights); Array.prototype.forEach.call(elements, function(el) { el.style.height = maxHeight + "px"; });
вы можете использовать jquery каждую функцию:
var highest; var first = 1; $('.features').each(function() { if(first == 1) { highest = $(this); first = 0; } else { if(highest.height() < $(this).height()) { highest = $(this); } } });
Вы можете сделать три столбца div, но вы должны добавить обертку вокруг него, как это
<div id="wrapper"> <div class="features"></div> <div class="features"></div> <div class="features"></div> </div>в голову теги поставить это
<style type="text/css"> #wrapper { position:relative; overflow:hidden; } .features { position:absolute; float:left; width:200px; /* set to whatever you want */ height:100%; } </style>независимо от ширины одного из ящиков, остальные тоже получат то же самое. Надеюсь, это поможет. Мне жаль, если это не так, я просто сделал код на месте.
Comments