2012-07-05 68 views
3

我正在尋找一種確定在瀏覽器中呈現的任何DOM節點的頂部邊距的可靠方法。這應該適用於所有瀏覽器。我怎樣才能做到這一點? (有時一個元素可能在樣式表中有一個指定的邊距,但它可能實際上並不會被瀏覽器渲染,例如,它有display:inline;(請參閱Margin top in inline element)我正在尋找實際的渲染邊距因此,使用getComputedStyle()將不起作用)如何獲取任何元素的渲染頂邊距

+0

實際重新設置的邊距,所以如果元素具有內聯顯示,您是否希望js返回邊距0或在CSS中元素上設置的邊距?對不起,我只是困惑,需要一點澄清 – Huangism 2012-07-05 20:04:10

+1

他希望它返回0. – Robin 2012-07-05 20:08:32

回答

1

好的,下面的方法工作嗎?

檢查元素是內嵌式地顯示,如果是這樣的利潤率最高爲0

如果沒有的話得到頂邊距

+0

是的,我想這會工作哈哈。 – user730569 2012-07-05 20:22:08

+0

@ user730569可能需要一些測試,但理論上它應該工作 – Huangism 2012-07-05 20:23:26

+0

我唯一的問題是,有沒有其他的樣式需要檢查? – user730569 2012-07-05 20:34:00

0

有可能是一種方式使用jQuery來做到這一點。如果這不是你想要的,我認爲你得到了我想要的,也許它可以幫助你找到一些東西。

function getRenderedTopMargin(id){ 
    var prevElementWidth; 
    var elementOffset = $('#'+id).offset(); 
    var prevElementOffset = $('#'+id).prev().offset(); 
    if ($('#'+id).css("display") == 'inline' || $('#'+id).prev().css("display") == 'inline'){ 
     prevElementWidth = 0; 
    }else{ 
     prevElementWidth = $('#'+id).prev().width(); 
    } 
    return elementOffset.top - prevElementOffset.top - prevElementWidth; 
}