基于js中style.width與offsetWidth的區(qū)別(詳解)
作為一個初學(xué)者,經(jīng)常會遇到在獲取某一元素的寬度(高度、top值...)時,到底是用 style.width還是offsetWidth的疑惑。
1. 當(dāng)樣式寫在行內(nèi)的時候,如 <div id="box" style="width:100px">時,用 style.width或者offsetWidth都可以獲取元素的寬度。
但是,當(dāng)樣式寫在樣式表中時,如 #box{ width: 100px; }, 此時只能用offsetWidth來獲取元素的寬度,而style.width所返回的值為空。
2. style.width 獲取的元素寬度只是div的寬度,不包括border、和padding所占的寬度,且寬度值是帶單位px的。
offsetWidth 獲取的元素寬度為width+border+padding的值(不包括margin),且返回值只為一個數(shù)值,不帶單位。
如下面的例子所示:
<head>
<script>
window.onload = function(){
var box = document.getElementById('box');
console.log(box.style.width);
console.log(box.offsetWidth);
}
</script>
</head>
<body>
<div id="box" style="width:300px; height: 300px; padding:3px; margin: 1px; border: 1px solid red;"></div>
</body>
控制臺輸出的第一個結(jié)果為: 300px
控制臺輸出的第二個結(jié)果為: 308 注:300+ 3x2 +1x2 = 308, 且不帶單位
3. style.width 也可以在js中用來設(shè)置元素的寬度,而offsetWidth不可以。
如下面的例子所示:
<script>
window.onload = function(){
var box = document.getElementById('box');
box.style.width = '200px';
console.log(box.offsetWidth);
console.log(box.style.width);
box.offsetWidth = '400px';
console.log(box.offsetWidth);
console.log(box.style.width);
}
</script>
</head>
<body>
<div id="box" style="width:300px; height: 300px; padding:3px; margin: 2px; border: 1px solid red;"></div>
</body>
控制臺輸出的結(jié)果分別為 208 200px 208 200px
也就是說通過style.width 設(shè)置寬度成功,而 通過offsetWidth設(shè)置寬度失敗。
以上這篇基于js中style.width與offsetWidth的區(qū)別(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- js獲取元素的偏移量offset簡單方法(必看)
- 詳解原生js實現(xiàn)offset方法
- JavaScript中offsetWidth的bug及解決方法
- JavaScript中style.left與offsetLeft的使用及區(qū)別詳解
- javascript中offset、client、scroll的屬性總結(jié)
- JavaScript中的getTimezoneOffset()方法使用詳解
- js實現(xiàn)jquery的offset()方法實例
- Javascript 運動中Offset的bug解決方案
- javascript中style.left和offsetLeft的用法說明
- JS OffsetParent屬性深入解析
- JS小功能(offsetLeft實現(xiàn)圖片滾動效果)實例代碼
- JS中offset和勻速動畫詳解
相關(guān)文章
js-FCC算法-No repeats please字符串的全排列(詳解)
下面小編就為大家?guī)硪黄猨s-FCC算法-No repeats please字符串的全排列(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
javascript面向?qū)ο笾蚕沓蓡T屬性與方法及prototype關(guān)鍵字用法
這篇文章主要介紹了javascript面向?qū)ο笾蚕沓蓡T屬性與方法及prototype關(guān)鍵字用法,實例分析了prototype關(guān)鍵字在共享成員屬性與方法中的原理與使用技巧,需要的朋友可以參考下2015-01-01
JS動態(tài)修改網(wǎng)頁body的背景色實例代碼
這篇文章主要介紹了JS動態(tài)修改網(wǎng)頁body的背景色實例代碼 ,需要的朋友可以參考下2017-10-10
JavaScript中的console.trace()函數(shù)介紹
這篇文章主要介紹了JavaScript中的console.trace()函數(shù)詳細介紹,console.trace()函數(shù)用來打印函數(shù)調(diào)用的棧信息,需要的朋友可以參考下2014-12-12
微信小程序頁面調(diào)用自定義組件內(nèi)的事件詳解
這篇文章主要介紹了微信小程序頁面調(diào)用自定義組件內(nèi)的事件詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09

