JavaScript offsetWidth
offsetWidth屬性可以返回元素的偏移寬度,只讀屬性,不能賦值。
無需糾結為什麼稱作偏移寬度,當然是有原因的,可能越討論越混亂。
我們只需要知道此寬度由哪些要素構成即可,可以結合offsetHeight屬性一起學習。
既然是偏移寬度,肯定與CSS中的width寬度有區別,不要想當然將它們等同。
語法結構:
[JavaScript] 純文字檢視 複製程式碼let num = dom.offsetWidth
圖示如下:
紅線之間的尺寸,就是offsetWidth屬性的返回值,下面分析一下返回值的具體構成:
(1).包含元素的寬度,這個寬度是CSS的width屬性指定的值。
(2).包含左右內邊距的尺寸。
(3).不包含左右外邊距的尺寸。
(4).包括左側垂直滾動條的寬度。
上面的這四條總結會在後面通過程式碼例項進行驗證。
offsetWidth屬性還有兩點需要再強調一下:
(1).返回值是數值,不帶任何單位,但是預設單位是畫素。
(2).與CSS的width不同,雖然可能在數值在相等。
(3).offsetWidth返回值會對數值進行四捨五入取整,加入實際的值是260.5,那麼返回161。
如果想要獲取獲取精確的值,推薦使用getBoundingClientRect()方法。
瀏覽器相容:
(1).IE瀏覽器支援此屬性。
(2).edge瀏覽器支援此屬性。
(3).谷歌瀏覽器支援此屬性。
(4).opera瀏覽器支援此屬性。
(5).火狐瀏覽器支援此屬性。
(6).safria瀏覽器支援此屬性。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:200px; height:100px; line-height:100px; border:10px solid blue; padding-left:10px; padding-right:5px; background:#ccc; text-align:center; } </style> <script> window.onload=function(){ let odiv=document.getElementById("box"); odiv.innerHTML=odiv.offsetWidth; } </script> </head> <body> <div id="box"></div> </body> </html>
程式碼執行效果截圖如下:
上述程式碼可以獲取div元素的offsetWidth屬性值,並將其寫入div。
上述程式碼簡單分析如下:
(1).屬性值是數值型別,無單位。
(2).235 = width + border-left + border-right + padding-left + padding-right。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:200px; height:100px; line-height:100px; background:#ccc; text-align:center; } </style> <script> window.onload=function(){ let odiv=document.getElementById("box"); odiv.innerHTML=odiv.offsetWidth; } </script> </head> <body> <div id="box"></div> </body> </html>
程式碼執行效果截圖如下:
特殊情況下,offsetWidth值大小與元素width值的大小可能會相同(只考慮數值大小)。
那就是元素沒有左右內邊距,沒有邊框,沒有垂直滾條的情況下。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:200px; height:100px; line-height:100px; background:red; text-align:center; font-size:12px; border:10px solid blue; padding-left:10px; overflow:auto; } #ant{ width:100px; height:200px; background:green; } </style> <script> window.onload=function(){ let odiv=document.getElementById("box"); console.log(odiv.offsetWidth); } </script> </head> <body> <div id="box"> <div id="ant"></div> </div> </body> </html>
offsetWidth屬性值谷歌開發者工具控制檯截圖如下:
程式碼分析如下:
(1).內部div高度較大,所以父div元素會出現滾動條。
(2).滾動條自然有一定的寬度(或者說厚度),當前在谷歌瀏覽器下寬度值為17px,其他瀏覽器可能不同。
(3).offsetWidth包括滾動條的寬度,滾動條是向內佔據寬度,也就是滾動條不額外增加offsetWidth值。
相關文章
- JavaScript屬性中的offsetLeft、offsetWidth、clientWidth、scrollLeft、scrollWidth、innerWidJavaScriptclient
- offsetwidth與style.width 區別
- dom的寬高 clientWidth offsetWidth scrollWidthclient
- 元素的尺寸 offsetWidth和clientWidth的區別client
- 蒙了嗎?offsetLeft、offsetWidth、scrollTop、scrollWidth、event.pageX
- js元素尺寸和位置,包含clientWidth、offsetWidth、scrollWidth等JSclient
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- [Javascript] How javascript read the property?JavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- “This” is For JavaScriptJavaScript
- This in JavaScriptJavaScript
- JavaScript -"this"JavaScript
- JavaScriptJavaScript
- javascript ??JavaScript
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- [Javascript] Perform Set Operations using JavaScript Set MethodsJavaScriptORM
- javascript — == vs ===JavaScript
- JavaScript selectedIndexJavaScriptIndex
- JavaScript deleteCell()JavaScriptdelete
- JavaScript lastElementChildJavaScriptAST
- JavaScript hasAttribute()JavaScript
- JavaScript getAttributeNode()JavaScript
- JavaScript replaceChild()JavaScript
- JavaScript remove()JavaScriptREM
- JavaScript appendChild()JavaScriptAPP
- JavaScript deleteRow()JavaScriptdelete
- JavaScript clientYJavaScriptclient
- JavaScript之thisJavaScript
- JavaScript isFinite()JavaScript
- JavaScript toggle()JavaScript
- JavaScript Boolean()JavaScriptBoolean
- JavaScript escape()JavaScript
- JavaScript parseFloat()JavaScript
- JavaScript unescape()JavaScript
- JavaScript call()JavaScript