2012-04-30 75 views
4

我試圖獲得相對於身體的鼠標位置(也就是身體=座標原點)的網站,該網站有它的主體元素固定在規模和中心通過使用margin:auto CSS屬性。快速離開和主體元素與利潤率頂偏:汽車

由於event.clientX和event.clientY屬性給我從頁面的起始位置的偏移,而不是從主體元素,我試着它。減去身體偏移。爲此,我試圖使用document.body.offsetLeft & document.body.offsetTop,但目前爲止沒有運氣,值是未定義的。另外,由於我沒有定義它,我不能使用document.body.style.left或document.body.style.top。

有誰知道一個辦法讓身體抵消或直接將鼠標座標相對於DOM元素?

預先感謝您!

回答

7

使用element.getBoundingClientRect()獲取元素的相對偏移:

var bodyOffsets = document.body.getBoundingClientRect(); 
//bodyOffsets.top ; 
//bodyOffsets.left ; 
+0

嘿謝謝你! :P 不知道可以直接獲取渲染位置。現在我感到愚蠢的計算相對於身體的位置,通過循環遍歷整個層次結構... – gaspercat

+0

@gaspercat對於一致的跨瀏覽器解決方案,請參閱[本答案](http://stackoverflow.com/a/8111175/ 938089)。 –

0

使用jQuery方法位置() - 它檢索相對於父偏移的當前位置。

+0

這似乎是一個不錯的選擇。我會記住,但在這種情況下,我並沒有在項目的其他任何地方使用Jquery。 – gaspercat