一 获取元素的宽高
obj.offsetWidth 元素的宽度 width+border+padding
obj.offsetHeight 元素的高度 height+border+padding
obj.clientWidth 元素的宽 width+padding
obj.clientHeight 元素的高 height+padding
<style type="text/css"> *{ margin:0; padding:0; } #box{ width:100px; height: 100px; background: #f00; padding: 20px; position: absolute; left:300px; top:200px; border:10px solid #000; } </style> </head> <body> <dib id="box"></dib> </body> </html> <script type="text/javascript"> var box=document.getElementById("box"); console.log(box.offsetWidth);//160 width+border+padding console.log(box.clientWidth);// 140 width+padding </script>
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
document.body.scrollWidth - 网页总宽
document.body.scrollHeight - 网页总高
document.body.scrollTop - 有滚动条的时候,向下拖动滚动条,上方不显示的那部分高度
document.body.scrollLeft - 同上
看了以上代码,可能会有疑问说body和可见区域到底有什么不同呢,我们在console里运行一下会发现在不同的网页中有不同的情况值,有的document.body.clientWidth和document.documentElement.clientWidth 的值相同,有的却不同,原因在哪呢?
原因就是:在浏览器默认的情况下,body有8-10px左右的边距,而可见区域包括了这个边距,因此如果我们用到body{padding:0;margin:0;}来消除这种默认的情况。那么document.body.clientWidth和document.documentElement.clientWidth 的值就会相同。