JS 之DOM4

一  获取元素的宽高

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 的值就会相同。

posted @ 2017-12-06 15:50  走在程序的路上  阅读(275)  评论(0编辑  收藏  举报