JS 中元素的各种位置尺寸宽高

本文详细介绍了DOM中与元素尺寸及位置相关的属性,包括style.width、clientWidth、offsetWidth等,以及offsetLeft和offsetTop的用法。通过示例展示了这些属性在不同情况下的具体表现。

offsetLeft[Top]

  • 只读 属性 当前元素到定位父级的距离,到当前元素的offsetParent的距离

ie7 : 如果自己没有定位,那么offsetLeft[Top]是到body的距离,如果自己有定位,那么offsetLeft[Top]是到offsetParent的距离。

style.width ,clientWidth ,offsetWidth

style.width: 样式宽 width 带单位px
clientWidth: 可视区宽 样式宽+ padding 不带单位px
offsetWidth: 占位宽 样式宽+padding+border宽 不带单位px

栗子:


<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>


    </style>
    <script>
        window.onload = function() {
           var oDiv = document.getElementById('div1');
            alert(oDiv.style.width);  // 100px 样式宽 === width  带单位px
            alert(oDiv.clientWidth);  //120   可视区宽   样式宽+ padding 不带单位px
            alert(oDiv.offsetWidth); // 122   占位宽   样式宽+padding+border宽  不带单位px
        };

    </script>

</head>
<body>
   <div id="div1" style="width: 100px; height: 100px;
   padding: 10px; border: 1px solid red; margin: 10px;">

   </div>
</body>
</html>
在JavaScript中获取DOM元素实际渲染的宽度度,可以通过以下几种方式实现: ### 获取元素宽度度 1. **使用 `offsetWidth` 和 `offsetHeight` 属性** 这些属性返回元素的布局宽度度,包括内边距(padding)和边框(border),但不包括外边距(margin)[^2]。 ```javascript const element = document.getElementById('myElement'); const width = element.offsetWidth; const height = element.offsetHeight; console.log(`Width: ${width}, Height: ${height}`); ``` 2. **使用 `clientWidth` 和 `clientHeight` 属性** 这些属性返回元素的可视区域宽度度,不包括边框和外边距,但包括内边距。 ```javascript const element = document.getElementById('myElement'); const clientWidth = element.clientWidth; const clientHeight = element.clientHeight; console.log(`Client Width: ${clientWidth}, Client Height: ${clientHeight}`); ``` 3. **使用 `getBoundingClientRect()` 方法** 该方法返回元素的大小及其相对于视口的位置,可以获取到更精确的尺寸信息,包括元素位置(top, right, bottom, left)以及。 ```javascript const element = document.getElementById('myElement'); const rect = element.getBoundingClientRect(); console.log(`Width: ${rect.width}, Height: ${rect.height}`); console.log(`Top: ${rect.top}, Left: ${rect.left}`); ``` ### 注意事项 - **动态渲染的元素**:如果元素是动态渲染的,需要确保在DOM加载完成后执行代码,否则可能无法获取到正确的尺寸信息。可以通过 `window.onload` 或 `DOMContentLoaded` 事件来确保DOM已经加载完成[^4]。 ```javascript window.onload = function() { const element = document.getElementById('myElement'); const width = element.offsetWidth; const height = element.offsetHeight; console.log(`Width: ${width}, Height: ${height}`); }; ``` - **响应式设计**:在响应式设计中,元素尺寸可能会随着窗口大小的变化而变化。可以监听 `resize` 事件来动态更新尺寸信息。 ```javascript window.addEventListener('resize', function() { const element = document.getElementById('myElement'); const width = element.offsetWidth; const height = element.offsetHeight; console.log(`Width: ${width}, Height: ${height}`); }); ``` ### 相关问题 1. 如何在React中获取DOM元素的实际? 2. 如何在Vue中处理动态渲染后获取DOM元素尺寸? 3. 如何使用JavaScript获取元素的外边距(margin)? 4. 在JavaScript中如何监听DOM元素尺寸变化? 5. 如何在页面加载完成后确保动态内容已经渲染并获取其尺寸
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值