clientWidth offsetWidth等视窗尺寸

发布时间:2025-12-09 11:58:00 浏览次数:1

clientWidth和offsetWidth

clientWidth

是一个只读属性,返回元素的内部宽度,该属性包括内边距,但不包括垂直滚动条(如果有)、边框和外边距。

offsetWidth

是一个只读属性,返回一个元素的布局宽度。一个典型的offsetWidth是测量包含元素的边框、水平线上的内边距、竖直方向滚动条(如果有的话)、以及CSS设置的宽度(width)值。
用法:var offsetWidth = element.offsetWidth;

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title>    <style>        #parent {            width: 200px;            height: 200px;            background-color: red;        }    </style></head><body>    <p ></p>    <script>        var clientWidth = window.document.getElementById("parent").clientWidth;        var offsetWidth = window.document.getElementById("parent").offsetWidth;        console.log(clientWidth);  //200        console.log(offsetWidth);  //200    </script></body></html>

当我们给上面parent元素加上边框内边距时:

 #parent {            width: 200px;            height: 200px;            background-color: red;            border: 10px solid black;            padding: 10px;        }

输出结果为:
// 220
// 240
现在我们给parent加一个子元素,并让滚动条出现,完整代码如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title>    <style>        #parent {            width: 200px;            height: 200px;            background-color: red;            border: 10px solid black;            padding: 10px;            overflow: auto;        }                #son {            width: 300px;            height: 300px;        }    </style></head><body>    <p >        <p ></p>    </p>    <script>        var clientWidth = window.document.getElementById("parent").clientWidth;        var offsetWidth = window.document.getElementById("parent").offsetWidth;        console.log(clientWidth);        console.log(offsetWidth);    </script></body></html>

显示结果如图:

输出信息如下:
// 205
// 240
对于上述代码作个简要说明,clientWidth值为205是这样计算来的:原本我们设置parent的宽度为200,因为我们设置了父元素overflow:scroll属性出现滚动条后,滚动条宽度被包括在这个设置的宽度之内。chrome浏览器滚动条默认宽度为15,所以parent宽度就只剩185.按照上面clientWidth定义来计算,clientWidth = 185(实际width) + 10(padding) + 10(padding).

未完待续

clientwidth
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477