Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得div';s内容高度_Javascript_Jquery_Css - Fatal编程技术网

Javascript 如何获得div';s内容高度

Javascript 如何获得div';s内容高度,javascript,jquery,css,Javascript,Jquery,Css,我的div有一个样式位置:绝对,因此,如果内容高于其高度,它不会展开 因此,我认为解决方案是找到实际内容的高度,并使用位置:绝对样式将高度指定给div 知道怎么做吗?或者是一个如何使绝对div根据其内容进行扩展的想法 提前谢谢 即使是绝对值,它也应该扩展。 检查你没有身高:xxpx 如果是这样,请使用clearfix hack将其更改为最小高度 并将clearfix添加到您的div中 范例 在样式表中 <style> .clearfix:after { content: ".

我的div有一个样式
位置:绝对
,因此,如果内容高于其高度,它不会展开

因此,我认为解决方案是找到实际内容的高度,并使用
位置:绝对
样式将高度指定给
div

知道怎么做吗?或者是一个如何使
绝对
div
根据其内容进行扩展的想法


提前谢谢

即使是绝对值,它也应该扩展。 检查你没有身高:xxpx

如果是这样,请使用clearfix hack将其更改为最小高度

并将clearfix添加到您的div中

范例

在样式表中

<style>
.clearfix:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}

.clearfix {
    display: inline-block;
}

html[xmlns] .clearfix {
    display: block;
}

* html .clearfix {
    height: 1%;
}
</style>

.clearfix:之后{
内容:“.”;
显示:块;
明确:两者皆有;
可见性:隐藏;
线高:0;
身高:0;
}
.clearfix{
显示:内联块;
}
html[xmlns].clearfix{
显示:块;
}
*html.clearfix{
身高:1%;
}
。。。 在您的div中添加clearfix

<div class="clearfix">
   //some html tags
</div>

//一些html标记
正如您所说的
“如果内容高于它的高度,它不会扩展。”
我猜您在它上面设置了一个固定的高度。。如果出于某种原因确实需要此功能,请尝试改用
min height

看看这个


一些内容。。。。


这里有一个非常糟糕的方法来计算容器的高度。我们基本上是克隆整个div,设置位置使其具有高度,检查该高度,然后删除它:

$(function () {
    var clone = null;
    alert( clone = $('.test').clone().css('position', 'static').appendTo(".container").height());
    clone.remove();
});

这是提琴:

谢谢你提出的问题。如果您使用此选项:

$(document).ready(function(){

 var x = $("#container").height();
 alert(x);

//if not works then 
  var y = $("#container").outerHeight();
  alert(y);

});

我认为,如果不应用任何div的高度,那么很容易用干净的代码找到任何div的高度。

元素。scrollHeight
应该可以完成这项工作。

类似于@MattDiamant的解决方案,但使用vanilla JS且不创建克隆:

function getDivHeight(posAbsoluteDiv) {
   const heightBackup = posAbsoluteDiv.style.height;

   posAbsoluteDiv.style.height = 'auto';

   const contentHeight = posAbsoluteDiv.getBoundingClientRect().height;

   posAbsoluteDiv.style.height = heightBackup;

   return contentHeight;
}

拥有
position:absolute
不应该阻止它扩展以适应内容,只要你不在上面设置特定的高度。请参阅示例:如果div中的元素是浮动的,请确保您正在应用某种ClearFix。您可以添加一个提琴,以便我们可以实际查看您的问题。也许更多的人会仔细检查你的代码,首先会发现什么地方出了问题,这很奇怪。。我已经仔细检查过了,我只有最小高度。在div里面的div是position:absolute,也就是position:absolute,也许这就是原因吧?这很奇怪。。我已经仔细检查过了,我只有最小高度。在div里面的div是position:absolute,也就是position:absolute,也许这就是原因?@kfirba是的,这就是原因。看看这把小提琴。您会注意到,div周围的包装应该显示蓝色背景,但它无法确定其内部内容的高度。我倾向于远离绝对定位(除非我需要一个浮动div)。这很奇怪。。我已经仔细检查过了,我只有最小高度。位于其位置为:绝对的div内的div也是位置为:绝对的,可能这就是原因?找不到如何使用它>。答案已修改。。恐怕是很长的。另外,这里已经有人发布了一个解决方案,所以我将使用它。谢谢你的好意!不幸的是,我已经遭受了足够多的问题,需要这个黑客。将一个div的高度设置为另一个div的高度,但它是绝对定位的。我一直在寻找更好的方法,但还没有找到。嗯,我想了好几个小时。。。我不想使用这种解决方案,但我就是找不到其他解决方案
function getDivHeight(posAbsoluteDiv) {
   const heightBackup = posAbsoluteDiv.style.height;

   posAbsoluteDiv.style.height = 'auto';

   const contentHeight = posAbsoluteDiv.getBoundingClientRect().height;

   posAbsoluteDiv.style.height = heightBackup;

   return contentHeight;
}