css樣式獲取,style,currentStyle,getComputedStyle

 

 

 

 

對於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("元素",「僞類」).樣式名。

相關文章
相關標籤/搜索