·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

JS获取元素的大小(高度和宽度)

229 1
发表于 2022-3-4 13:49:49 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
与元素尺寸相关的属性
元素尺寸属性说明
clientWidth获取元素可视部分的宽度,即 CSS 的 width 和 padding 属性值之和,元素边框和滚动条不包括在内,也不包含任何可能的滚动区域
clientHeight获取元素可视部分的高度,即 CSS 的 height 和 padding 属性值之和,元素边框和滚动条不包括在内,也不包含任何可能的滚动区域
offsetWidth元素在页面中占据的宽度总和,包括 width、padding、border 以及滚动条的宽度
offsetHeight元素在页面中占据的高度总和,包括 height、padding、border 以及滚动条的宽度
scrollWidth当元素设置了 overflow:visible 样式属性时,元素的总宽度,也称滚动宽度。在默认状态下,如果该属性值大于 clientWidth 属性值,则元素会显示滚动条,以便能够翻阅被隐藏的区域
scrollHeight当元素设置了 overflow:visible 样式属性时,元素的总高度,也称滚动高度。在默认状态下,如果该属性值大于 clientWidth 属性值,则元素会显示滚动条,以便能够翻阅被隐藏的区域

[JavaScript]  
  1. <div style="height:200px;width:200px;">
  2.     <div style="height:50%;width:50%;">
  3.         <div style="height:50%;width:50%;">
  4.             <div style="height:50%;width:50%;">
  5.                 <div id="div" style="height:50%;width:50%;border-style:solid;"></div>
  6.             </div>
  7.         </div>
  8.     </div>
  9. </div>
  10. <script>
  11.     var div = document.getElementById("div");
  12.     var w = div.offsetWidth;    // 返回元素的总宽度
  13.     var h = div.offsetHeight;    // 返回元素的总高度
  14.     alert("div.offsetWidth =" + w);
  15.     alert("div.offsetHeight =" +w);
  16. </script>
复制代码
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-21 13:14:21 | 查看全部
在JavaScript中,获取元素的尺寸(高度和宽度)是非常常见的操作。你提到的几个属性(`clientWidth`、`clientHeight`、`offsetWidth`、`offsetHeight`、`scrollWidth`、`scrollHeight`)都是用来获取元素尺寸的,但它们各自的作用和计算方式有所不同。下面我将详细解释这些属性的区别,并给出一个示例代码。

### 1. `clientWidth` 和 `clientHeight`
- **`clientWidth`**: 获取元素可视部分的宽度,包括 `padding`,但不包括 `border`、`margin` 和滚动条的宽度。
- **`clientHeight`**: 获取元素可视部分的高度,包括 `padding`,但不包括 `border`、`margin` 和滚动条的高度。

### 2. `offsetWidth` 和 `offsetHeight`
- **`offsetWidth`**: 获取元素在页面中占据的总宽度,包括 `width`、`padding`、`border` 以及滚动条的宽度。
- **`offsetHeight`**: 获取元素在页面中占据的总高度,包括 `height`、`padding`、`border` 以及滚动条的高度。

### 3. `scrollWidth` 和 `scrollHeight`
- **`scrollWidth`**: 获取元素内容的总宽度,包括由于溢出而不可见的部分。如果内容没有溢出,则 `scrollWidth` 等于 `clientWidth`。
- **`scrollHeight`**: 获取元素内容的总高度,包括由于溢出而不可见的部分。如果内容没有溢出,则 `scrollHeight` 等于 `clientHeight`。

### 示例代码
以下是一个简单的示例,展示如何使用这些属性来获取元素的尺寸:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Element Size Example</title>
  7.     <style>
  8.         #div {
  9.             width: 200px;
  10.             height: 100px;
  11.             padding: 10px;
  12.             border: 5px solid black;
  13.             overflow: auto;
  14.         }
  15.     </style>
  16. </head>
  17. <body>
  18.     <div id="div">
  19.         This is a sample div with some content to demonstrate the size properties.
  20.     </div>

  21.     <script>
  22.         var div = document.getElementById("div");

  23.         var clientWidth = div.clientWidth;    // 可视宽度,包括 padding
  24.         var clientHeight = div.clientHeight;  // 可视高度,包括 padding

  25.         var offsetWidth = div.offsetWidth;    // 总宽度,包括 padding, border, 滚动条
  26.         var offsetHeight = div.offsetHeight;  // 总高度,包括 padding, border, 滚动条

  27.         var scrollWidth = div.scrollWidth;    // 内容总宽度,包括溢出部分
  28.         var scrollHeight = div.scrollHeight;  // 内容总高度,包括溢出部分

  29.         console.log("clientWidth: " + clientWidth);
  30.         console.log("clientHeight: " + clientHeight);
  31.         console.log("offsetWidth: " + offsetWidth);
  32.         console.log("offsetHeight: " + offsetHeight);
  33.         console.log("scrollWidth: " + scrollWidth);
  34.         console.log("scrollHeight: " + scrollHeight);
  35.     </script>
  36. </body>
  37. </html>
复制代码


### 输出结果
- `clientWidth`: 220px (200px width + 10px padding on each side)
- `clientHeight`: 120px (100px height + 10px padding on each side)
- `offsetWidth`: 230px (200px width + 10px padding on each side + 5px border on each side)
- `offsetHeight`: 130px (100px height + 10px padding on each side + 5px border on each side)
- `scrollWidth`: 取决于内容的总宽度,如果内容没有溢出,则等于 `clientWidth`
- `scrollHeight`: 取决于内容的总高度,如果内容没有溢出,则等于 `clientHeight`

### 注意事项
- 如果你需要获取元素的尺寸,并且希望包括 `border` 和 `padding`,通常使用 `offsetWidth` 和 `offsetHeight`。
- 如果你只关心元素的可视部分(不包括 `border` 和滚动条),则使用 `clientWidth` 和 `clientHeight`。
- 如果你需要获取元素内容的实际尺寸(包括溢出部分),则使用 `scrollWidth` 和 `scrollHeight`。

希望这个解释和示例代码对你有帮助!如果你有更多关于Discuz或其他建站方面的问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.219.226.57,GMT+8, 2025-3-29 06:25 , Processed in 0.358434 second(s), 73 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表