2012-08-29 59 views
0

我一直在試圖找到很好的函數來幫助我將元素放在頁面中,考慮其他元素的位置。我沒有使用jQuery。未找到頁面中元素的正確位置。函數不考慮填充

所以我發現很多消息來源告訴我,我應該瀏覽目標元素的offsetParent,得到他們的offsetTops和offsetLefts。它幾乎工作,但我做了一些測試,並意識到它不考慮一些父母的填充。我改變了使用CSS的填充,它仍然給出相同的數字。而當我把在頁面中的元素,它卡住接近或超過母公司的利潤

我使用這個函數(這是很相似的,我發現在網絡上的大多數功能)

function getOffset(el){ 
if(isString(el)) el = document.getElementById(el); 

var x = el.offsetLeft; 
var y = el.offsetTop; 

while(el = el.offsetParent){ 
    x += el.offsetLeft; 
    y += el.offsetTop; 
} 

return { left: x, top: y }; 

}

你知道如何解決它,朋友嗎?如果我張貼一些照片會有幫助嗎?我已經試圖改變CSS,我深信問題是一個元素的填充。

@EDIT

我使用的是Firefox 14.0.1

在原始頁面還有很多其他的因素,這就是爲什麼我得到的數量是不同的。但在jsfiddle中的錯誤是一樣的。它說1左(這可能是元素'內容'的邊框的寬度)。它沒有考慮元素'registerArea'中左側填充的15個像素,也沒有考慮邊界。

http://jsfiddle.net/rhPYH/25/

+0

jsFiddle總是有幫助 –

+0

請注意,jQuery對它們的文檔具有相同的限制:「注意:jQuery不支持獲取隱藏元素的偏移座標,也不支持在body元素上設置邊框,邊距或填充。 –

+0

啊,這是不是一件不可能做的事情,史蒂夫?你有沒有見過同樣的問題? –

回答

0

好吧,

我一直在使用顯示:表作出元素的大小其autoAdjust到它的內容。出於某種原因,Javascript有一些問題需要找到這個元素的正確大小'registerArea'(它有一個顯示:表規則和填充)。我所做的是改變塊的顯示。它仍然正確地呈現元素,現在Javascript正在考慮填充,什麼給了我元素的正確位置。