<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body style="height:900px; width:1800px; padding:22px; border:solid red 20px; margin:14px">
<script language="javascript" type="text/javascript">
var aa=function(){ // 1280 * 800
   alert('document.body.style.height :'+ document.body.style.height +'\n'+ // 900px
   'document.body.style.width :'+document.body.style.width +'\n'+ // 1800px
   
   // 两个client 还理解的比较混乱
   'document.body.clientWidth :'+document.body.clientWidth+'\n'+ // 1844(无pading 无滚动条),Q1`:这个地方好像又是 width + 2 * padding, 不知可否如此解释?
   'document.body.clientHeight:'+document.body.clientHeight+'\n'+ // Standard模式下为 1110,Q2: 这个是怎么计算出来的
   'document.documentElement.clientWidth'+document.documentElement.clientWidth+'\n'+ // Standard模式下1259,这个是浏览器的可视高度
   'document.documentElement.clientHeight:'+document.documentElement.clientHeight+'\n'+ // Standard模式下612,这个是浏览器的可视高度
   
   // offsetWidth 
   'document.body.offsetWidth:'+document.body.offsetWidth+'\n'+ // 1884(width + 2padding + 2border), 不包含 margin 
   'document.body.offsetHeight:'+document.body.offsetHeight+'\n'+ //  Standard模式下为 1150
   'document.documentElement.offsetWidth'+document.documentElement.offsetWidth+'\n'+ //Standard模式下 1280
   'document.documentElement.offsetHeight:'+document.documentElement.offsetHeight+'\n'+ //Standard模式下 633
   
   // scroll   // div中没有宽度的数据,所以直接从 body 中集成
   'document.body.scrollWidth:'+document.body.scrollWidth+'\n'+ // 1844
   'document.body.scrollHeight:'+document.body.scrollHeight+'\n'+ //Standard模式下为1110
   'document.documentElement.scrollWidth:'+document.documentElement.scrollWidth+'\n'+ // 1912
   'document.documentElement.scrollHeight:'+document.documentElement.scrollHeight+'\n'+ //Standard模式下 1178
    
   // 
   'document.body.scrollTop:'+document.body.scrollTop+'\n'+  // 0
   'document.body.scrollLeft'+document.body.scrollLeft+'\n'+  // 0
   'document.documentElement.scrollTop:'+document.documentElement.scrollTop+'\n'+  // 0
   'document.documentElement.scrollLeft:'+document.documentElement.scrollLeft+'\n' // 0
  );
};
document.onclick=aa;
</script>
<div style="height:1000px; padding: 20px; border:solid purple 13px; margin:18px"></div>
</body>
</html>

解决方案 »

  1.   

    我搞不清楚,所以我用jquery搞
      

  2.   

    scrollWidth是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会改变对象的实际宽度) 
    clientWidth是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。
    offsetWidth是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。
    scrollHeight: 获取对象的滚动高度。 
    scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 
    scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 
    offsetHeight:获取对象相对于版面或由父坐标 
    offsetParent 属性指定的父坐标的高度 
    offsetLeft:获取对象相对于版面或由 
    offsetParent 属性指定的父坐标的计算左侧位置 
    offsetTop:获取对象相对于版面或由 
    offsetTop 属性指定的父坐标的计算顶端位置 
    event.clientX 相对文档的水平座标 
    event.clientY 相对文档的垂直座标 
    event.offsetX 相对容器的水平坐标 
    event.offsetY 相对容器的垂直坐标 
    document.documentElement.scrollTop 垂直方向滚动的值 event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量   
    以上主要指IE之中,FireFox差异如下: 
    IE6.0、FF1.06+: 
    clientWidth = width + padding clientHeight = height + padding 
    offsetWidth = width + padding + border 
    offsetHeight = height + padding + border 
    IE5.0/5.5: 
    clientWidth = width - border 
    clientHeight = height - border 
    offsetWidth = width 
    offsetHeight = height 
    (需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)  
      

  3.   

    http://hi.baidu.com/xzmyzy/blog/item/2141ef6d87ca91f24316948f.html