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方法的那些事
- JS - 獲取CSS屬性值 getComputedStyle()與currentStyle()、style()方法JSCSS
- Qdrant用法;Qdrant在langchain裡的用法LangChain
- Yii2-application用法 (Yii::$app用法)APP
- Cmake用法
- JavaScript用法JavaScript
- iostat用法iOS
- JOptionPane用法
- seqkit用法
- typedef用法
- union用法
- enum用法
- GPG 用法
- sessionStorage 用法Session
- localStorage 用法
- SQLserver With As 用法SQLServer
- WebSocket 用法Web
- Screen 用法
- replace()用法
- VotingClassifier用法GC
- Hydra用法
- unique 用法
- __kindof用法
- requestAnimationFrame用法requestAnimationFrame
- JavaScript this用法JavaScript
- SVN用法
- static用法
- JSONP 用法JSON
- phpstrtr()用法PHP
- crm用法
- sed用法
- supervisor用法
- allure用法(一)-配置資訊及基本用法
- RDD用法與例項(五):glom的用法
- python match用法Python
- GORM基本用法GoORM
- Opentelemetry collector用法
- createjs tween用法JS