Javascript jQuery.height()设置的高度超过了参数中指定的高度

Javascript jQuery.height()设置的高度超过了参数中指定的高度,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有两个较小的div和一个较大的div。我需要将较大div的高度调整为等于两个div的高度之和,加上它们之间的20px垂直边距。我是这样做的: <div id="team-container"> <div id="block1">Block 1</div> <div id="block2">Block 2</div> </div> <div id="team-details"></div

我有两个较小的div和一个较大的div。我需要将较大div的
高度
调整为等于两个div的高度之和,加上它们之间的
20px
垂直边距。我是这样做的:

<div id="team-container">
    <div id="block1">Block 1</div>
    <div id="block2">Block 2</div>  
</div>
<div id="team-details"></div>

所以,问题是如果我调用
.height(546),它不会将高度设置为546px,但会将其设置为606px。但是如果我使用css设置高度,例如
.css('height','546px')
,它工作正常,高度精确设置为546px。

jQuery的
height
函数实际上非常智能,在幕后进行了大量计算,包括边框、填充边距等

考虑使用
$(“#团队详细信息”).css('height',contentHeight+'px')。这是一种更直接的方法,如果您自己进行计算,它可能更适合这种情况

顺便说一下,
+'px'
实际上是不需要的。从jQuery文档中:

调用.height(value)时,该值可以是字符串(数字) 和单位)或一个数字。如果仅为该值提供了一个数字, jQuery采用像素单位

css
函数文档()中:

当一个数字作为值传递时,jQuery将将其转换为 字符串并将px添加到该字符串的末尾。如果物业需要 以px以外的单位,将值转换为字符串并添加 在调用该方法之前,请使用适当的单位


还有一件事,如果您想进一步了解
height
函数的工作原理,可以在这里查看:第333行到第353行。如您所见,它调用了
augmentWidthOrHeight
函数,进行了一些严肃的计算和jQuery魔术。

jQuery的
height
函数实际上非常聪明,在幕后进行了大量的计算,涉及到边框、填充边距等

考虑使用
$(“#团队详细信息”).css('height',contentHeight+'px')。这是一种更直接的方法,如果您自己进行计算,它可能更适合这种情况

顺便说一下,
+'px'
实际上是不需要的。从jQuery文档中:

调用.height(value)时,该值可以是字符串(数字) 和单位)或一个数字。如果仅为该值提供了一个数字, jQuery采用像素单位

css
函数文档()中:

当一个数字作为值传递时,jQuery将将其转换为 字符串并将px添加到该字符串的末尾。如果物业需要 以px以外的单位,将值转换为字符串并添加 在调用该方法之前,请使用适当的单位



还有一件事,如果您想进一步了解
height
函数的工作原理,可以在这里查看:第333行到第353行。如您所见,它调用了
augmentWidthOrHeight
函数,该函数执行了一些严肃的计算和jQuery魔术。

您能在JSFIDLE中复制这个问题吗?您能为这个例子提供css吗?它位于引导选项卡组件中,我不知道如何准确地将其复制到JSFIDLE。我发现如果我使用
$(“#team details”).css('height',contentHeight+'px')设置高度你的HTML+JS工作得很好。所以我想你应该研究一下你的CSS或者一些你没有告诉我们的东西。除非你有其他事情(可能是CSS),否则你的代码工作得很好:你能在JSFIDLE中复制这个问题吗?你能为这个例子提供CSS吗?它在一个引导选项卡组件中,我不知道如何准确地将它复制到JSFIDLE。我发现如果我使用
$(“#team details”).css('height',contentHeight+'px')设置高度你的HTML+JS工作得很好。所以我想你应该看看你的CSS或者一些你没有告诉我们的东西。除非你有其他事情(可能是CSS),否则你的代码工作得很好:如果你使用
.CSS()
来设置高度,你需要提供单位(px)。
.height()
.css(“height”)
之间的主要区别在于前者返回的值小于单位,这对计算非常有用。是的,没错。当我将其与@MelanciaUK提到的“px”一起使用时,它设置了正确的高度。但为什么会这样?@Mike我的评论可能会为你澄清。@MelanciaUK它澄清了单位的事情,但我打电话给
.height(546)时不清楚为什么,它将高度设置为606px?但是当我使用“css('height','546px')时,它工作得很好。@Mike-正如我在回答中所解释的,
height
函数在实际进入DOM并更改元素的样式属性之前,会做很多额外的计算。您可以在此处了解更多信息:如果使用
.css()
设置高度,则需要提供单位(px)。
.height()
.css(“height”)
之间的主要区别在于前者返回的值小于单位,这对计算非常有用。是的,没错。当我将其与@MelanciaUK提到的“px”一起使用时,它设置了正确的高度。但为什么会这样?@Mike我的评论可能会为你澄清。@MelanciaUK它澄清了单位的事情,但我打电话给
.height(546)时不清楚为什么,它将高度设置为606px?但是当我使用“css('height','546px')时,它工作得很好。@Mike-正如我在回答中所解释的,
height
函数在实际进入DOM并更改元素的样式属性之前,会做很多额外的计算。您可以在此处阅读更多有关内容: