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