3

我正在寻找一种可靠的方法来确定在浏览器中呈现的任何 DOM 节点的上边距。这应该适用于所有浏览器。我怎样才能做到这一点?(有时,一个元素可能在样式表中具有指定的边距,但它实际上可能不会由浏览器呈现,例如,如果它有display:inline;(参见内联元素中的边距顶部)。我正在寻找实际呈现的边距。因此,使用getComputedStyle()将不起作用)

4

2 回答 2

1

好的,下面的方法有效吗?

检查元素是否内联显示,如果是,则边距顶部为 0

如果没有,则获得最高边距

于 2012-07-05T20:09:55.747 回答
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;
}
于 2012-07-05T20:09:59.987 回答