2013-11-01 71 views
2

我正在使用getBoundingClientRect來知道元素是否在頁面中的特定點上。所以我這樣做:getBoundingClientRect知道元素是否在特定的垂直點上

var rect = el.getBoundingClientRect(); 

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

我認爲這是運作良好,但在一些調試我發現,一些元素對所有頂級返回0,下,左,右。例如:Example1Example2

<span id='a'> 
    <span id='b'>This is some crazy text.</span> 
</span> 

#b { 
    float: left; 
} 

#b { 
    position: absolute; 
} 

我關注越來越全部爲零。這是爲什麼發生?我可以相信這種方法,我正在努力完成什麼?

+0

嘗試['display:inline-block'](http://jsfiddle.net/zqDkq/)而不是'position:absolute'。 – Teemu

+0

Teemu,我正在解析網站,並且我想知道這是否是一種信任方法,因爲我無法控制CSS。 –

+0

看起來像一些瀏覽器(Chrome)需要檢查的元素是一個塊級元素。如果你無法控制CSS,簡單的答案就是否定的,你不能完全信任'getBoundingClientRect()'。 – Teemu

回答

0

您可以使用document.getBoxObjectFor(el)查看,或嘗試使用el.offsetTop/offsetLeft/offsetWidth/offsetHeight。認爲他們可能只是Mozilla,但不知道他們是否會使用非塊級元素。

相關問題