说我有一个溢出的包装div:隐藏在它和一个div,远远超出可见部分的div.如何获得内部div的可见高度?
<div id="wrapper" style="overflow: hidden; height:400px;"> <div id="inner"> <!--Lots of content in here--> </div> <div>
尝试尝试获取内部div的高度的每种方法都会返回完整的高度,包括隐藏的部分,即2000px.我想要获得只有可见部分的高度,所以在这个例子中为400px.
我知道我可以得到parentNode的高度,但在生产中,内部div可能不是第一个孩子.所以可能会有其他div分开他们,所以#inner的高度将是400 – 无论它和#wrapper之间的元素的偏移.
解决方法
作为基本算法,这可以起作用:
var offset=0; var node=document.getElementById("inner"); while (node.offsetParent && node.offsetParent.id!="wrapper") { offset+=node.offsetTop; node=node.offsetParent; } var visible=node.offsetHeight-offset;
但是,如果你正在做这些事情,也许你已经使用了jQuery,它可能与.height()和.offset()函数一起使用:
$("#wrapper").height()- $("#inner").offset()['top']+ $("#wrapper").offset()['top'];