Разбирался сегодня с размерами html-объектов. Вот этот момент меня удивил. Ниже полный HTML. Если его запустить, то :
FF3.0 выдаст правильный offsetHeight и правильно посчитает стилевую height (18+5=23)
IE6.0 мало того, что не станет считать стиль и выдаст auto, ещё и врёт на 1px для offsetHeight.
Либо я что-то не учёл?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta name="robots" content="noindex, nofollow" />
<style type="text/css">
body {
font-size: 11pt;
margin: 0px;
padding: 0px;
}
.s {
background: red;
padding-top: 5px;
}
</style>
<!--[if IE]>
<style type="text/css">
html {
padding: 0px;
margin: 0px;
}
</style>
<![endif]-->
</head>
<body>
<div class='s' id='r'>rrr</div>
<script type='text/javascript'>
function getCSSVal(elem, prop){
if (typeof elem != 'object') elem = document.getElementById(elem)
if(document.defaultView && document.defaultView.getComputedStyle){
if(prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase()
return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop)
}
if(elem.currentStyle){ // IE case
return elem.currentStyle[prop];
}
return ''
}
var r = document.getElementById('r')
alert('r.offsetWidth='+r.offsetHeight+' CSSheight='+getCSSVal(r,'height'))
</script>
</body>
</html>