2013-08-23 5 views
3

width 속성을 검사하면 DOM 요소의 폭이 너무 넓고 CSS 규칙이 있는지 확인해야합니다 (CSS 규칙으로 고정 된 픽셀 수를 가진 요소 만 찾고 있습니다)).요소의 너비를 확인하는 가장 좋은 방법은 무엇입니까?

if (element.offsetWidth && element.offsetWidth > 0) // do stuff 

또는

if ((element.offsetWidth && element.offsetWidth > 0) 
    || (element.style && element.style.width 
     && int(element.style.width.replace("px", ""), 10)>0) // do stuff 

차라리 처음에 갈 것입니다하지만 난 CSS 규칙을 설정하는 것은 또한 width 속성을 설정합니다 있는지 확인하려면

.

는 ---- 편집 ----

사실 offsetWidth은 어떤 경우에도보다 나은 width 것 같다. widthoffsetWidth으로 변경했습니다.

두 번째 옵션 (CSS 검사)이 쓸모 없습니까?

+0

어떻게 부정적으로 볼 수 있습니까? dth? –

+0

너비가 0 인 요소를 피하고 싶습니다. –

+0

아. 나는 0이 아닌 값이 "양성"이라고 간주 할 것입니다. "DOM 요소의 너비가 0보다 큰지 확인하기"라고 말하는 것이 더 명확합니다. –

답변

3

element.offsetWidth은 충분합니다 - 그리고 아니, style 요소를 확인하는 것은

1

난 당신이 요소

window.getComputedStyle(element).width 

의 계산 된 스타일을 확인하는 경우이 값이 반환 안심할 수 있다고 생각 필요하지 않습니다 적용된 CSS 규칙보다 정확하고 정확합니다 (외부 CSS 파일의 너비가 0! important라고하면 인라인 속성을 재정의하고 el.style.width에서 사용자에게보고하지 않음)

+0

은 지원해야하는 브라우저에 따라 다릅니다. http://caniuse.com/getcomputedstyle – lbstr

+0

고마워요. 불행히도이 기능에 대한 지원은 아직 너무 부족하여 안전하게 사용할 수 있습니다. –

+0

예전 IE의 경우 (심지어 브라우저일까요?) element.currentStyle을 사용할 수 있습니다. – Sgoldy

관련 문제