JavaScript scrollWidth
scrollWidth 屬性返回指定元素的內容寬度,只讀屬性,返回值是一個數字(預設以畫素計)。
此屬性對內容寬度進行四捨五入取整,如需精確值,推薦 getBoundingClientRect() 方法。
掌握此屬性關鍵在於理解什麼是 "內容寬度",後續通過程式碼詳細分析。
語法結構:
[JavaScript] 純文字檢視 複製程式碼dom.scrollWidth
內容寬度圖示如下:
圖示簡單分析如下:
(1).元素的寬度並不能完全表達其"內容寬度"。
(2).因為,內容的寬度可能會更大,如上圖藍色內容,寬度大於其容器。
上面進行了粗略的概述,以便對內容寬度有一個總體把握,下面通過程式碼例項演示細節。
瀏覽器支援:
(1).IE 瀏覽器支援此屬性。
(2).edge 瀏覽器支援此屬性。
(3).谷歌瀏覽器支援此屬性。
(4).火狐瀏覽器支援此屬性。
(5).opera 瀏覽器支援此屬性。
(6).safari 瀏覽器支援此屬性。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #ant { width :100px; height :60px; line-height :60px; margin :5px; padding :10px; border :5px solid #ccc; text-align :center; font-size :12px; color :green; } </style> <script> window.onload = ()=> { let oDiv=document.getElementById("ant"); let num = oDiv.scrollWidth; oDiv.innerHTML = num; } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
對上述程式碼分析如下:
(1).水平方位沒有出現滾動條,那麼 scrollWidth 與 clientWidth 相同。
(2).120 = 100(width)+ 10(padding-left)+ 10(padding-right)。
(3).也就是 ,scrollWidth 屬性值等於元素 width 寬度加左右內邊距。
關於 clientWidth 屬性可以參閱 JavaScript clientWidth 一章節。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style> div{ border:2px dotted #ccc; text-align:center; } #ant { width :150px; height :60px; margin-bottom :5px; padding :10px; overflow :auto; } #inner { width :300px; height :30px; margin:5px; } #show { width: 170px; color:green; font-size: 12px; } </style> <script> window.onload = ()=> { let oDiv = document.getElementById("ant"); let oShow = document.getElementById("show"); let num = oDiv.scrollWidth; oShow.innerHTML = num; } </script> </head> <body> <div id="ant"> <div id="inner"></div> </div> <div id="show"></div> </body> </html>
程式碼執行效果截圖如下:
下面進行一下分析:
(1)."內容寬度" 較大,所以父元素出現水平滾動條。
(2)."內容寬度" 等於元素在不出現水平滾動條情況下,恰好容納其內部所有內容所需要的視口寬度。
(3).ant.padding-left(10) + inner.width(300) + inner.borderWidth(2+2) + inner.margin-left(5) =319 。
強調:預設,父塊級元素空間不足的情況下,子塊級元素的右外邊距和父元素的右內邊距會失效,首先滿足左邊。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style> div{ border:2px dotted #ccc; text-align:center; } #ant { width :299px; height :60px; margin-bottom :5px; padding :10px; overflow :auto; } #inner { width :300px; height :30px; margin:5px; } #show { width: 319px; color:green; font-size: 12px; } </style> <script> window.onload = ()=> { let oDiv = document.getElementById("ant"); let oShow = document.getElementById("show"); let num = oDiv.scrollWidth; oShow.innerHTML = num; } </script> </head> <body> <div id="ant"> <div id="inner"></div> </div> <div id="show"></div> </body> </html>
程式碼執行效果截圖如下:
前面提到過,"內容寬度" 等於元素在不出現水平滾動條情況下,恰好容納其內部所有內容所需要的視口寬度。
ant.padding-left(10) + inner.margin-left(5) + inner.width(300) + inner.borderWidth(2+2) =319。
這個319就是視口寬度臨界值,如果減少,則會出現水平滾動條。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style> div{ border :2px dotted #ccc;} #ant { width: 120px; height: 60px; margin: 5px; padding: 10px; overflow: auto; } #inner { width: 100px; height: 100px; } #show { width: 145px; color:green; font-size: 12px; text-align: center; } </style> <script> window.onload = ()=> { let oDiv=document.getElementById("ant"); let oShow=document.getElementById("show"); let num = oDiv.scrollWidth; oShow.innerHTML = num; } </script> </head> <body> <div id="ant"> <div id="inner"></div> </div> <div id="show"></div> </body> </html>
程式碼執行效果截圖如下:
程式碼分析如下:
(1).scrollWidth 不包含垂直滾動條寬度。
(2).當前谷歌滾動條寬度是 17px,各瀏覽器滾動條寬度以實測為準。
(3).123 = 120(width)+ 10(padding-left)+ 10(padding-right)- 17。
相關文章
- JavaScript屬性中的offsetLeft、offsetWidth、clientWidth、scrollLeft、scrollWidth、innerWidJavaScriptclient
- scrollHeight和scrollWidth瀏覽器相容瀏覽器
- scrollWidth,clientWidth,offsetWidth的區別client
- dom的寬高 clientWidth offsetWidth scrollWidthclient
- scrollWidth,clientWidth與offsetWidth的區別client
- js元素尺寸和位置,包含clientWidth、offsetWidth、scrollWidth等JSclient
- 蒙了嗎?offsetLeft、offsetWidth、scrollTop、scrollWidth、event.pageX
- clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeightclient
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- 【JavaScript學習】JavaScript物件建立JavaScript物件
- 【轉】eval()函式(javascript) - [javaScript]函式JavaScript
- [Javascript] How javascript read the property?JavaScript
- JavaScript -"this"JavaScript
- javascript ??JavaScript
- This in JavaScriptJavaScript
- “This” is For JavaScriptJavaScript
- javascript thisJavaScript
- JavaScriptJavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- 【轉向JavaScript系列】AST in Modern JavaScriptJavaScriptAST
- javascript,還是javascript的問題JavaScript
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- 《深入理解JavaScript》——2.3 JavaScript有用嗎JavaScript
- 【JavaScript】--JavaScript總結一覽無餘JavaScript
- 【HTML、JAVASCRIPT、CSS】3、Javascript基本概念HTMLJavaScriptCSS
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript EventJavaScript
- JavaScript BackdoorJavaScript
- JavaScript normalize()JavaScriptORM
- JavaScript setDate()JavaScript
- JavaScript setMinutes()JavaScript
- JavaScript getDate()JavaScript
- JavaScript setHours()JavaScript
- JavaScript setUTCMinutes()JavaScript
- JavaScript setUTCHours()JavaScript
- JavaScript setUTCFullYear()JavaScript