CSSStyleDeclaration length 屬性
首先問題是搞清楚CSSStyleDeclaration表示的是什麼。
它表示一個CSS規則的宣告部分,程式碼如下:
[CSS] 純文字檢視 複製程式碼#ant{ width:100px; height:100px; background-color:#ccc; }
上面是一個CSS規則,CSSStyleDeclaration代表的是CSS宣告部分,也就是大括號裡面的內容。
關於CSSStyleDeclaration更多內容參閱CSSStyleDeclaration物件一章節。
CSSStyleDeclaration物件的length屬性可以返回CSS規則的宣告中CSS屬性的條數。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #ant { width:100px; height:100px; text-align:center; line-height:100px; } </style> <script> window.onload = function () { let odiv = document.getElementById("ant"); odiv.style.backgroundColor = "#ccc"; odiv.style.marginLeft = "10px"; odiv.innerHTML = odiv.style.length; } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
可能很多朋友對這個數字2有所質疑,因為設定在div元素上的CSS屬性不止2條。
分析如下:
(1).odiv.style返回一個CSSStyleDeclaration物件。
(2).但是通過style返回的CSSStyleDeclaration物件只包含通過style方式設定的CSS屬性。
(3).所以length返回值是2。再來看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #ant { width:100px; height:100px; text-align:center; line-height:100px; } </style> <script> window.onload = function () { let odiv = document.getElementById("ant"); odiv.style.backgroundColor = "#ccc"; odiv.style.marginLeft = "10px"; odiv.style.marginLeft = "20px"; odiv.innerHTML = odiv.style.length; } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
如果重複設定同一個CSS屬性,那麼這些屬性會合併成一個。
所以上述程式碼length屬性返回值依然是2。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #ant { width:100px; height:100px; text-align:center; line-height:100px; border:2px solid red; } </style> <script> window.onload = function () { let odiv = document.getElementById("ant"); odiv.style.backgroundColor = "#ccc"; odiv.style.marginLeft = "10px"; let declaration=getComputedStyle(odiv,null); odiv.innerHTML = declaration.length; console.log(declaration); } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
程式碼分析如下:
(1).getComputedStyle方法可以返回一個CSSStyleDeclaration物件。
(2).getComputedStyle方法獲取的是元素最終的CSS樣式屬性值,包括各種預設的屬性值。
(3).所以length屬性值為280並不奇怪。
以下是控制檯列印效果截圖:
僅僅是截圖的一小部分,權做演示。
由上面兩段程式碼可以看出,CSSStyleDeclaration物件包括的CSS屬性條數在不同的情況下有所不同。
再看一下如何獲取樣式表指定規則中的CSS屬性的條數,以#ant選擇器建立的CSS規則為例。
程式碼如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #ant { width:100px; height:100px; text-align:center; line-height:100px; } </style> <script> window.onload = function () { let odiv = document.getElementById("ant"); odiv.style.backgroundColor = "#ccc"; odiv.style.marginLeft = "10px"; let declaration=document.styleSheets[0].cssRules[0].style; odiv.innerHTML = declaration.length; } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
的確#ant中具有4個CSS屬性的宣告,length屬性值為4很正常。
為div新增一個邊框屬性,程式碼修改如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #ant { width:100px; height:100px; text-align:center; line-height:100px; border:2px solid red; } </style> <script> window.onload = function () { let odiv = document.getElementById("ant"); odiv.style.backgroundColor = "#ccc"; odiv.style.marginLeft = "10px"; let declaration=document.styleSheets[0].cssRules[0].style; odiv.innerHTML = declaration.length; console.log(declaration); } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
只多了一個關於邊框的設定,但是列印結果讓人匪夷所思,21條。
控制檯列印效果截圖如下:
很簡單,因為border是複合屬性,CSSStyleDeclaration中的CSS屬性會進行拆分。
雖然僅設定了邊框粗細、顏色和型別,但畢竟是針對border的設定,而針對border的CSS屬性可以細分為多個。
相關文章
- CSSStyleDeclaration.lengthCSS
- FileList length 屬性
- JavaScript select length 屬性JavaScript
- JavaScript 字串 length屬性JavaScript字串
- JavaScript 函式 length 屬性JavaScript函式
- JavaScript 陣列 length 屬性JavaScript陣列
- CSSStyleDeclaration物件CSS物件
- CSSStyleDeclaration.item()方法CSS
- CMake 屬性之全域性屬性
- defer 屬性和 async 屬性
- CSS 屬性篇(七):Display屬性CSS
- CMake 屬性之目錄屬性
- CMake 屬性之目標屬性
- mysql char_length和lengthMySql
- Java中 length、length()、size()區別Java
- Python - 物件導向程式設計 - 公共屬性、保護屬性、私有屬性Python物件程式設計
- CSS字型屬性和文字屬性詳解CSS
- Python 類的屬性與例項屬性Python
- python物件屬性管理(2):property管理屬性Python物件
- 根據屬性字串獲取屬性值字串
- CAD屬性編輯操作——物件屬性教程物件
- cssRules 屬性CSS
- previousElementSibling 屬性
- translucent屬性
- parentRule 屬性
- parentStyleSheet屬性
- cssText 屬性CSS
- Property屬性
- 私有屬性
- background屬性
- allowfullscreen 屬性
- ref屬性
- HTML 屬性HTML
- onreadystatechange 屬性
- DOM屬性
- jQuery 屬性jQuery
- background 屬性
- jQuery設定disabled屬性與移除disabled屬性jQuery