Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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 getBoundingClientRect以了解元素是否位于特定垂直点之上_Javascript_Html_Css - Fatal编程技术网

Javascript getBoundingClientRect以了解元素是否位于特定垂直点之上

Javascript getBoundingClientRect以了解元素是否位于特定垂直点之上,javascript,html,css,Javascript,Html,Css,我使用getBoundingClientRect来了解元素是否位于页面中特定点的上方。所以我这样做: var rect = el.getBoundingClientRect(); if (rect.top < bottom_limit) { return true; } 我担心得到全零。为什么会这样?我可以相信这个方法来完成我想要完成的任务吗?您可以研究使用document.getBoxObjectFor(el),或者尝试使用el.offsetTop/offsetLeft/off

我使用getBoundingClientRect来了解元素是否位于页面中特定点的上方。所以我这样做:

var rect = el.getBoundingClientRect();

if (rect.top < bottom_limit) {
   return true;
}

我担心得到全零。为什么会这样?我可以相信这个方法来完成我想要完成的任务吗?

您可以研究使用document.getBoxObjectFor(el),或者尝试使用el.offsetTop/offsetLeft/offsetWidth/offsetHeight。我想他们可能只是Mozilla,不确定他们是否会使用非块级元素。

尝试而不是
位置:绝对的
。Teemu,我正在解析网站,我想知道这是否是一个可靠的方法,因为我无法控制CSS。看起来像一些浏览器(Chrome)需要选中的元素为块级元素。如果你不能控制CSS,一个简短的回答就是“不”,你不能完全信任
getBoundingClientRect()
。这真是个坏消息。谢谢你。
<span id='a'>
    <span id='b'>This is some crazy text.</span>
</span>

#b {
    float: left;
}
#b {
    position: absolute;
}