對於css樣式的獲取問題,對於行內樣式,咱們能夠用style來獲取,可是對於內嵌和外部樣式的話,style就心有餘和力不足了。它是獲取不到這些樣式的javascript
此時就只有currentStyle和getComputedStyle上陣了。css
currentStyle是隻兼容各類IE的,可是不兼容火狐,谷歌的,而getComputeStyle的話是能夠兼容火狐,谷歌,和IE9+的。(如下測試均在谷歌和IE下)html
對於行內樣式:java
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!-- <link href="test.css" rel="stylesheet"> --> <script type="text/javascript" src="test.js" defer="defer"></script> <title>Document</title> </head> <style type="text/css"> </style> <body> <div class="wrap" style=" width:100px; height:100px; background-color:black;"> </div> </body> </html>
此時用這着三種方法:瀏覽器
var oWrap = document.getElementsByTagName("div")[0]; window.onload = function (){ console.log(oWrap.style.width); console.log(oWrap.currentStyle.width); console.log(getComputedStyle(oWrap,null).width); }
獲得的結果是:測試
把報錯的,也就是currentStyle註釋掉,就會獲得:spa
情理之中。由於currentStyle時不兼容谷歌的code
而後改爲內嵌樣式的話:htm
結果也在乎料之中:blog
再加上註釋了,結果是:
外部樣式表的話,結果也是同樣的。
而後IE的話,
IE8的話是不支持getComputedStyle。而IE9+是支持的。
外部樣式IE8:
外部樣式IE9:
最後徹底符合結果。
結論:
1.style只支持行內樣式,對於其餘樣式引入方式一概很差用。
2.currentStyle和getComputedStyle支持各類樣式引入方式。但存在兼容性問題。
3.currentStyle兼容IE,不兼容谷歌,火狐等瀏覽器,會報錯。
4.getComputedStyle兼容谷歌,火狐,IE9+,不兼容IE8如下,包括IE8。
注意:
1.currentStyle的使用方式是:元素.currentStyle("樣式名")或者元素.currentStyle.樣式名。
2.getComputedStyle是全局的,使用方式是:getComputedStyle("元素",「僞類」)["樣式名"]或者getComputedStyle("元素",「僞類」).樣式名。