我有div.box
,其中有多个元素,一个图像,两个文本框和一个链接。div.box
中的元素是动态填充的,因此它可以是多行文本或更大或更小的图像。无论如何,我将min-height:210px;
应用于div.box
es。
210px是其内部元素的最大高度。我的页面布局实际上取决于这个值210px,所以它不能更高。
然而,它可以小于这个210px,所以我想使用jQuery来检索元素的实际高度(如果没有设置一个最小高度)?
这可能吗?现在,如果我想设置为$("div.box").height()
它总是会返回210px因为那是元素的高度。如果这个最小高度css值没有设置,我怎么能得到高度呢?我需要得到每个孩子的身高然后把它们加起来吗?
提前谢谢你…
这有点复杂。我用最小高度是因为我有一个网格布局其中4个div。box是并排的。有多行。如果我不使用最小高度值,并且其中一个框小于其他框,则下一行框将跳出网格并与上一行最高的div框对齐(div框是浮动的)我试图用jQuery解决这个问题的原因是,我想要设置总是一行的div-box高度到这一行的最高框。这可以理解吗?
所以现在所有的div-box都是min-height:210px,这意味着所有的box都有相同的高度。就像我说的,它是一个格子,例如4x4左右。现在网格是完全完美的,因为所有的盒子都有相同的高度。但是,假设第一行中的所有框都有一个小图像,一行文本不填充div-box高度的210px。因此,第一行框和第二行框之间的间距在视觉上看起来不太好——间距太大了。
这就是为什么我想要找出一个div.box的实际高度的原因,这样我就可以将最大值总是应用到四个框的集合中。所以所有行都有各自的高度…
如果没有样本,我猜没人能理解:)
编辑编辑:或者,是否有可能通过css对框的每四个元素应用一个clear ?这就是解决方案了
就像我在评论中说的,
如果你改变min-height
到max-height
,然后如果你改变.height()
,你会得到你想要的。
如何获得div.box
中last child
相对于div.box
的top
值,并将其与last child's
的高度相加?
像这样,
var $box = $('.box');
var lastChildPos = $(':last-child', $box).position();
var lastChildHeight = $(':last-child', $box).height();
alert(lastChildPos .top + lastChildHeight);
检查这个小提琴(已更新)
因为你的-min-height
为210,.height()
将始终返回210px,除非里面的元素将div.box
扩展到更大的高度。
你可以做的是完全删除min-height
,只依赖.height()
。
我也认为你在写你的问题时有点困惑,因为你提到min-height:210
,然后你说210px是内部元素的最大高度…
总之,我已经创建了一个简单的jsFiddle来演示我的意思,http://jsfiddle.net/HpZX9/
* *编辑
如果你想使用CSS来清除每四个div.box
使用以下代码:
.box:nth-child(4n) {
clear: both; /* left, both, right, none */
}
* *编辑编辑下面是一个使用jQuery的解决方案。查找最高div http://jsfiddle.net/J4EpN/
解决方案:
min-height引用说它的默认值是0
,因此,将min-height重置为默认值可以得到框的绝对高度。
js:
(function() {
var abusolute_height, box, _min_height;
box = $(".box");
/*
get _min_height
_min_height maybe the min-height
*/
_min_height = box.height();
/*
get absulute height
*/
box.css({
"min-height": 0
});
abusolute_height = box.height();
if (_min_height > abusolute_height) {
/*
if the height of box is the min-height
reset it
*/
box.css({
"min-height": _min_height
});
}
alert("min height:" + _min_height);
alert("abusolute height:" + abusolute_height);
}).call(this);
但最后显示的absulote height
是_min_height
。
查看此处jsfiddle