Javascript 如何获取任何元素的渲染顶边距

Javascript 如何获取任何元素的渲染顶边距,javascript,html,css,margin,Javascript,Html,Css,Margin,我正在寻找一种健壮的方法来确定在浏览器中渲染的任何DOM节点的上边缘。这应该适用于所有浏览器。我该怎么做?(有时一个元素在样式表中可能有一个指定的边距,但如果它有display:inline;(请参阅),则浏览器可能不会实际呈现它。我正在查找实际呈现的边距。因此,使用getComputedStyle()将不起作用)确定以下方法是否有效 检查元素是否显示为内联,如果是,则边距顶部为0 如果没有,那么使用JQuery可以获得最高利润。如果这不是你想要的,我想你得到了我想要的,也许它能帮你找到一些东西

我正在寻找一种健壮的方法来确定在浏览器中渲染的任何DOM节点的上边缘。这应该适用于所有浏览器。我该怎么做?(有时一个元素在样式表中可能有一个指定的边距,但如果它有
display:inline;
(请参阅),则浏览器可能不会实际呈现它。我正在查找实际呈现的边距。因此,使用
getComputedStyle()
将不起作用)

确定以下方法是否有效

检查元素是否显示为内联,如果是,则边距顶部为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;
}

实际的重新定义的边距,所以如果元素具有display inline,您希望js返回边距0还是css中元素上设置的边距?抱歉,我只是感到困惑,需要一点澄清他希望它返回0。@user730569可能需要一些测试,但理论上它应该可以工作。我唯一的问题是,您是否需要检查其他样式?@user730569您很快就会发现:)