offsetWidth、clientWidth、width、scrollWidth区别及获取

博客围绕offsetWidth、clientWidth和scrollWidth展开,虽无具体内容,但这些是前端开发中用于获取元素尺寸的重要属性,在处理页面布局和元素显示时十分关键。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>offsetWidth、clientWidth、width、scrollWidth区别及获取</title>
    <style>
    .box {
        width: 100px;
        height: 100px;
        padding:0 10px;
        border: 1px solid black;
        background: red;
        margin: 10px;
    }
    </style>
</head>

<body>
    <div class="box" id="box"></div>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
 	<script>
 		var oDiv = document.getElementById('box');

 		var a = oDiv.offsetWidth;   //元素宽度 =  width + padding + border  只读
 		var b = $(oDiv).outerWidth(false);  //参数为true的话就包括margin

 		var c = oDiv.offsetHeight;  //元素高度 = height + padding + border  只读
 		var d = $(oDiv).outerHeight(false);  //参数为true,包括margin

 		var e = oDiv.clientWidth;  //元素宽度 = width + padding  只读
 		var f = $(oDiv).innerWidth();

 		var g = oDiv.clientHeight;  //元素高度 = height + padding 只读
 		var h = $(oDiv).innerHeight();

 		var i = oDiv.style.width; //元素宽度 width  返回的是数字,如10  可读写
 		var j = $(oDiv).width();  //width(val)设置宽度

 		var k = oDiv.style.height; //元素高度 height  需要在html中先赋值才能取到  返回的是字符串 如"10px"  可读写
 		var l = $(oDiv).height();  //height(val) 设置高度

 		var m = oDiv.scrollWidth;  //元素宽度 = width + padding + 溢出尺寸,没有溢出的时候 = clientWidth  可读写
 		var n = oDiv.scrollHeight; //元素高度 = height + padding + 溢出尺寸,没有溢出的时候 = clientHeight  可读写
 	</script>
</body>

</html>

 

这三个属性 `scrollWidth`、`offsetWidth` 和 `clientWidth` 都是用于获取 DOM 元素的宽度,但它们的用途和计算方式有所不同。下面将详细解释它们的区别,并给出代码示例帮助你理解。 --- ### ✅ `clientWidth` - **定义**:元素内部的可视区域宽度(不包括边框、滚动条、外边距)。 - **组成**:`width + padding`(不包括 border 和 margin)。 - **是否包含滚动条**:不包含。 ```javascript const element = document.getElementById('myDiv'); console.log(element.clientWidth); // clientWidth ``` --- ### ✅ `offsetWidth` - **定义**:元素的可见区域总宽度,包括内容、内边距、边框。 - **组成**:`width + padding + border`。 - **是否包含滚动条**:包含滚动条(如果存在)。 - **注意**:这个值是只读的。 ```javascript console.log(element.offsetWidth); // offsetWidth ``` --- ### ✅ `scrollWidth` - **定义**:元素内容的实际宽度,包括不可见的部分(即被隐藏的部分)。 - **组成**:内容的实际宽度(即使内容被滚动条隐藏了,也计算在内)。 - **是否包含滚动条**:不包含。 ```javascript console.log(element.scrollWidth); // scrollWidth ``` --- ### ✅ 总结对比表格 | 属性名 | 包含内容 | 是否包括滚动条 | 是否包括边框 | 是否包括隐藏内容 | |---------------|------------------|----------------|----------------|------------------| | `clientWidth` | width + padding | ❌ | ❌ | ❌ | | `offsetWidth` | width + padding + border | ✅ | ✅ | ❌ | | `scrollWidth` | 实际内容宽度 | ❌ | ❌ | ✅ | --- ### ✅ 使用场景举例 - **判断文字是否被截断(省略号显示)**: ```javascript function isTruncated(element) { return element.scrollWidth > element.offsetWidth; } ``` - **获取元素的可见区域大小(包括边框)**: ```javascript const visibleWidth = element.offsetWidth; ``` - **获取元素内部完整内容宽度(即使被隐藏)**: ```javascript const fullContentWidth = element.scrollWidth; ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值