2012-07-05 4 views
3

브라우저에서 렌더링되는 모든 DOM 노드의 위쪽 여백을 결정하는 강력한 방법을 찾고 있습니다. 이것은 모든 브라우저에서 작동합니다. 어떻게해야합니까? 때로는 요소가 스타일 시트에 지정된 여백을 가질 수도 있지만 예를 들어 display:inline; (예 : Margin top in inline element 참조)이있는 경우 실제로 브라우저에서 렌더링되지 않을 수 있습니다. 실제로 렌더링 된 여백을 찾으므로 getComputedStyle()을 사용합니다. 작동하지 않음)요소의 렌더링 된 위쪽 여백을 얻는 방법

+0

실제로 redenered 여백이 표시됩니다. 요소에 표시가있는 경우 js가 CSS에서 요소에 설정된 여백 0 또는 여백을 반환하겠습니까? 죄송합니다, 혼란 스럽습니다. 약간의 설명이 필요합니다. – Huangism

+1

그는 그것이 0을 반환하기를 원합니다. – Robin

답변

1

그래도 다음 방법이 효과가 있습니까?

확인 후 상단 여백을하지 그래서 만약 여백 상단이 0

경우 요소가 표시 인라인 경우

+0

그래,이게 하하 일할 것 같아. – user730569

+0

@ user730569 아마 테스트가 필요 하겠지만 이론적으로는 작동해야합니다. – Huangism

+0

내 유일한 질문은 확인해야 할 다른 스타일이 있습니까? – user730569

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; 
} 
관련 문제