使用jQuery / CSS来查找所有元素中最高的
可能重复:
CSS – 等高度列?
我有3个div。
喜欢这个:
<div class="features"></div> <div class="features"></div> <div class="features"></div>
他们将被充满文本。 我不知道多less。 事情是,他们都是平等的高度是必要的。
我如何使用jQuery(或CSS)来find最高的DIV,并将其他两个设置为相同的高度,创build3个相等的高度DIV。
这可能吗?
你不能容易地select高度或比较CSS,但jQuery和一些迭代应该很容易处理这个问题。 我们将循环遍历每个元素并跟踪最高的元素,然后再循环 ,并将每个元素的高度设置为最高的(工作的JSFiddle )高度:
$(document).ready(function() { var maxHeight = -1; $('.features').each(function() { maxHeight = maxHeight > $(this).height() ? maxHeight : $(this).height(); }); $('.features').each(function() { $(this).height(maxHeight); }); });
[附录]
Sheriffderek 在响应式网格中为此解决scheme制作了一个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"; });
( 这里是ES6 )
你可以使用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>
无论宽度是多less,其他的都会一样。 希望这可以帮助。 如果没有,我很抱歉,我只是当场做了代码。