<!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>
<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>
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均无关)