test< div> <script> </u>function getStyle(el, name) { </a>if(window.getCompulatedStyle) { </span>return window.getCompulatedStyle(el, null) </div>}else; 🎜>return el.<div class="codebody" id="code2181">} <br>} <br>var div = document.getElementsByTagName('div')[0] <br>alert(getStyle(div, 'width')); ></script> ; <br><br> <br>div는 스타일 속성을 설정하지도 않고 스타일 시트를 도입하지도 않습니다. 너비와 높이(브라우저 기본값)는 Firefox/IE9/Safari/Chrome/Opera에서 얻을 수 있지만 IE6/7/8에서는 얻을 수 없으며 auto가 반환됩니다. <br>여기서 getStyle 메소드는 getCompulatedStyle을 먼저 사용하며 IE9에서는 이미 이 메소드를 지원합니다. 따라서 너비와 높이는 IE9에서 얻을 수 있습니다. 그러나 IE6/7/8은 이를 지원하지 않으며 currentStyle을 통해서만 얻을 수 있습니다. <br>시나리오 3: 스타일 속성을 설정하지도 않고 스타일 시트를 도입하지도 않는 요소 <br><br><br><br><br>코드 복사 </div>
<br><br> 코드는 다음과 같습니다. : <br><div class="codebody" id="code84427"> <br><div>테스트<div> <br><스크립트> <br>function getStyle(el,name) { <br>if(window.getCompulatedStyle) { <br>return window.getCompulatedStyle(el, null)[name]; <br>}else{ <br>return el.currentStyle[이름]; <br>} <br>} <br>function getWH(el, name) { <br>var val = name === "width" ? el.offsetWidth : el.offsetHeight, <br> which = name === "너비" ? ['왼쪽', '오른쪽'] : ['위쪽', '아래쪽']; <br>// 표시가 없음 <br>if(val === 0) { <br>return 0; <br>} <br>for(var i = 0, a; a = which[i ];) { <br>val -=parseFloat( getStyle(el, "border" a "Width") ) || 0; <br>val -=parseFloat( getStyle(el, "padding" a) ) || 0; <br>} <br>값 'px'를 반환합니다. <br>} <br>var div = document.getElementsByTagName('div')[0]; <br>alert(getWH(div, '너비')); <br></script>
思路很简单: 获取元素의 오프셋 너비/오프셋 높이, 减去원素의 패딩 및 테두리.