我有一个容器元素,它是一种布局容器,它的子项和基于一些属性,我必须安排孩子。JavaScript - 需要一种方法来设置元素的OuterHeight
我需要简单的方法来设置元素的outerHeight,像,
$(e).setOuterHeight(200);
jQuery的outerHeight没有设置高度在所有的,确实是其一个只读的方法。
$(e).height(200); // this clips my element
在上面的方法中,我放松了输入文本的边框。
我的元素的儿童是基于可用空间和基于数据的一些其他标准,它拥有像浮简单的布局,清晰等不会因为填充等动态改变基于尺寸的工作对接。即使我不想但没有选择,我终将使用Table,但无论如何感谢您的帮助。
现在,当元素的大小更然后孩子则没有问题,但有时容器元素可能有较小的高度那么孩子和那个时候,我需要增加尺寸。
function calculateSize(e){
var s = {
width: $(e).innerWidth(),
height: 0
};
var ae = new Enumerator(e.children);
while(ae.next()){
var child = ae.current();
// I have tried all alternatives
// for following lines
// child.clientHeight || child.offsetHeight
// $(child).outerHeight()
// $(child).innerHeight()
s.height += $(child).outerHeight();
}
if(s.height > $(e).height()){
$(e).height(s.height);
}
}
function layoutChildren(e){
....
/// for every child c
/// some steps before
var heightForChildren =
calculatedWithPadMarginBorder(availableHeight,c);
/// tried combinations
$(c).height(heightForChildren);
/// last statement fails for button
/// as button's padding cuts itself
/// removing padding in calculation
/// cuts other input elements !!
/// some steps after
....
}
我需要如何计算运行高度/宽度,包括/不包括填充/保证金/边框等,以及如何正确设置它,这样我不遇到问题了一些解释。我不能继续尝试所有的排列组合,因为即使在jQuery网站上我也没有看到正确的文档。
固定高度的计算都很好,但是这是一种其自身的大小,并安排在特定的顺序儿童中动态元素。
问题是没有办法设置outerHeight,当我们设置元素的高度/宽度时,高度/宽度实际上是内部高度/宽度而没有考虑边距,而当我们想调整父级时,我们需要outerHeight,但我们不能容易地将外部高度设置回来。
我calculateSize和layoutChildren是两种不同的方法和两个独立的算法,因为父母将被重新调整,总结所有儿童的身高。然后高度被简单地分为没有。的孩子堆叠在一起。我的计算是完美的,但在我的layoutChildren方法中,我有元素的“outerHeight”和“outerWidth”,并且不知道如何使用jQuery或其他任何方式正确设置它。
我想将outerHeight设置为元素,jQuery给了我outerHeight,但是如何将它设置为元素? –
好吧,现在我明白了。这是CSS boxmodel的一个基本问题:http://www.w3.org/TR/CSS2/box.html这已经引起了很大的争议。 我建议一个相当丑陋的方法,因为我们已经在处理javascript的高度计算。这是您计算outerHeight中的差异,有无边距,并且当您设置高度时,您将添加此差异。 我希望这是有道理的 - 虽然我会强烈建议您尝试为此找到一个CSS解决方案,一般来说,这些类型的元素问题安排总是有一个比JS解决方案更流畅的CSS解决方案 – kraenhansen
:)这是真的一个丑陋的解决方案,不幸的是,计算仍然不能很好地执行,因为我刚刚发现,SELECT和BUTTON是唯一一个与其他控件有不同计算的控件,只有那些被裁剪。我很喜欢CSS解决方案,但我们又一次处理30%的IE用户,而IE 7-8对CSS2仍然很奇怪。 –