【发布时间】:2018-03-12 08:14:39
【问题描述】:
我知道这个问题已被问过一百万次,但我正在寻找更具体的问题。
由于我的网站是完全响应式的,我需要根据每行调整 div 的大小,而不是全部设置为一个高度。
我正在使用以下修改后的代码来设置容器内所有 div 的高度:
$.fn.eqHeights = function() {
var el = $(this);
if (el.length > 0 && !el.data('eqHeights')) {
$(window).bind('resize.eqHeights', function() {
el.eqHeights();
});
el.data('eqHeights', true);
}
return el.each(function() {
var curTop = 0;
var curHighest = 0;
$(this).children().each(function(indx) {
var el = $(this),
elHeight = el.height('auto').outerHeight();
var thisTop = el.position().top;
if (curTop > 0 && curTop != thisTop) {
curHighest = 0;
}
if (elHeight > curHighest) {
curHighest = elHeight;
}
curTop = thisTop;
}).height(curHighest);
});
};
我有var thisTop = el.position().top; 来确定哪些元素位于同一行,但我不确定如何将同一行中的所有元素设置为最大值?
目前.height(curHighest); 将所有元素设置为相同的高度,无论它们是否在同一行。
感谢您的帮助。
【问题讨论】:
-
您是否尝试过将
el.height(curHighest);放在.each循环内的末尾,而不是在其后加上.height(curHighest)? -
是的,我试过了,但它不起作用,因为下一个元素可能有更大的高度,因此循环不能返回并设置行中前一个元素的高度。 :(
-
是否有一个包含每一行的
<div>不起作用? -
问题是行根据浏览器宽度动态不同。每行可能有 4,2 或 1 个元素。
标签: javascript jquery responsive-design equal-heights