getComputedStyle() 用法
本文將通過程式碼例項詳細介紹一下getComputedStyle的用法,首先看一個初學者經常遇到的問題。
專案中,經常需要獲取元素CSS屬性值,可能會遇到後面類似情況,有時候能夠正確獲取,有時候則不能。
下面分析一下出現此問題的原因,以及解決方案,首先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ width:100px; height:100px; margin-top:20px; } #first{background-color:red} </style> <script type="text/javascript"> window.onload=function(){ var first=document.getElementById("first"); var second=document.getElementById("second"); alert(first.style.backgroundColor); alert(second.style.backgroundColor); } </script> </head> <body> <div id="first"></div> <div id="second" style="background-color:blue"></div> </body> </html>
程式碼執行後,順利彈出第二個div的背景顏色,第一個的沒有獲取到。
很多朋友可能認為dom.style屬性無所不能,不但能設定元素的樣式,也能夠獲取到對應的樣式值。
然而事實是,dom.style只能夠獲取通過如下方式設定的CSS屬性值:
(1).HTML標籤的style屬性設定CSS屬性值。
(2).dom.style.width="100px"這樣類似設定CSS屬性值。
此時,getComputedStyle方法的功能得以體現,它可以獲取元素CSS屬性的最終計算值。
語法結構:
[JavaScript] 純文字檢視 複製程式碼window.getComputedStyle(element, [pseudoElt])
引數解析:
(1).element:必需,要獲取樣式值的元素節點物件。
(2).pseudoElt:可選,表示指定元素節點的偽元素(:before、:after、:first-line、:first-letter等)。
瀏覽器支援:
(1).IE9+瀏覽器支援此方法。
(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"> div{ width:100px; height:100px; margin-top:20px; } #first{background-color:red} </style> <script type="text/javascript"> window.onload=function(){ var first=document.getElementById("first"); var second=document.getElementById("second"); alert(window.getComputedStyle(first,null).backgroundColor); alert(second.style.backgroundColor); } </script> </head> <body> <div id="first"></div> <div id="second" style="background-color:blue"></div> </body> </html>
以上程式碼成功的獲取了第一個div的背景顏色。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ width:100px; height:100px; margin-top:20px; } #first{background-color:red} #first::before{ content:"新增的內容"; color:#0000ff; } </style> <script type="text/javascript"> window.onload=function(){ var first=document.getElementById("first"); var second=document.getElementById("second"); alert(window.getComputedStyle(first,":before").color); } </script> </head> <body> <div id="first"></div> <div id="second" style="background-color:blue"></div> </body> </html>
以上程式碼可以獲取偽元素中字型顏色值(顏色會被轉換成RGB或者RGBA模式)。
不能直接獲取複合屬性值,例如padding屬性的值,只能讀paddingLeft、paddingTop等屬性。
相關文章
- getComputedStyle的簡單用法
- getComputedStyle與currentStyle
- getComputedStyle方法的那些事
- getComputedStyle()獲取樣式值
- js中style,currentStyle和getComputedStyle的區別JS
- getComputedStyle()方法如何獲取float屬性值
- 獲取元素CSS值之getComputedStyle方法熟悉CSS
- 【CSS進階】原生JS getComputedStyle等方法解析CSSJS
- JS - 獲取CSS屬性值 getComputedStyle()與currentStyle()、style()方法JSCSS
- getComputedStyle()函式如何獲取border等符合屬性值函式
- js便籤筆記(7)——style、currentStyle、getComputedStyle區別介紹【轉載】JS筆記
- with用法
- Qdrant用法;Qdrant在langchain裡的用法LangChain
- sessionStorage 用法Session
- WebSocket 用法Web
- SQLserver With As 用法SQLServer
- requestAnimationFrame用法requestAnimationFrame
- requestAnimationFrame()用法requestAnimationFrame
- JavaScript this用法JavaScript
- quilt用法UI
- WITH AS 用法-CTE
- ORACLE WITH AS 用法Oracle
- dvbsnoop用法OOP
- ioctlsocket() 用法TLS
- enum用法
- seqkit用法
- GPG 用法
- typedef用法
- union用法
- JavaScript用法JavaScript
- JOptionPane用法
- Yii2-application用法 (Yii::$app用法)APP
- SQL AS 的用法SQL
- rsync 用法教程
- SUBMIT 的用法MIT
- Vue 元件用法Vue元件
- Promise基本用法Promise
- indexOf()的用法Index