js之如何獲取css樣式

1、獲取內聯樣式css

複製代碼
 1 <div id ="myDiv" style="width:100px;height:100px; border:1px solid black;"></div>
 2 <script>
 3     var myDiv = document.getElementById("myDiv");
 4 
 5     alert(myDiv.style.width);//100px
 6 
 7     alert(myDiv.style['height']);//100px
 8 
 9     var style=myDiv.style;
10     alert(style.backgroundColor);//red
11 
12     myDiv.style.backgroundColor='green';//myDiv背景色變爲綠色 
13 </script>
複製代碼

在這種狀況下,獲取和設置樣式只靠style屬性就能夠,由於element.style屬性返回的是相似數組的一組樣式屬性及對應值,所以訪問具體樣式的時候能夠採起兩種方式即「ele.style.屬性名稱」和「ele.style['屬性名稱']」。可是,要注意的是,針對css樣式裏background-color;margin-left之類的短槓相接的屬性名稱,在使用style屬性獲取設置樣式的時候名稱要改成駝峯式,如ele.style.backgroundColor.數組

2、由於第一種方法,即便用style屬性只能獲取到內聯樣式。可是,實際狀況是文檔在如今都基本遵循分離思想,樣式基本都是外部連接,因此三種樣式都要考慮到的,這時就要使用其餘方法進行獲取,而在這種狀況下進行樣式獲取時,不一樣的瀏覽器又有不一樣的處理方式(主要是ie和非ie),所以根據瀏覽器能夠分爲兩種方式:瀏覽器

(2.1)非ie瀏覽器中,使用document.defaultView對象的getComputedStyle(ele,null/僞類)方法,該方法接受兩個參數,第一個爲要考察的元素,第二個則要根據狀況,若是隻是考察元素自己則爲null,若是要 考察僞類,則爲響應的僞類。該方法獲取到的爲元素應用的最終樣式組合,一樣是相似數組的一個實例。函數

(2.2)在ie瀏覽器中,對getComputedStyle()方法不支持,可是針對每一個標籤元素都有一個近似於style屬性的currentStyle的屬性,且用法和style用法相同。只不過獲取到的樣式範圍不同。currenStyle獲取到的和getComputedStyle()方法相接近。spa

爲了在處理時達到兼容,能夠根據這兩種不一樣的處理方式建立一個函數來達到兼容目的,使得無論在那種瀏覽器中,均可以成功獲取樣式。以下所示:code

複製代碼
 1 <style type="text/css">
 2 #myDiv {
 3     background-color:blue;
 4     width:100px;
 5     height:200px;
 6 }
 7 </style>
 8 
 9 <div id ="myDiv" style=" border:1px solid black;"></div>
10 <script>
11     var myDiv = document.getElementById("myDiv");
12     var finalStyle = myDiv.currentStyle ? myDiv.currentStyle : document.defaultView.getComputedStyle(myDiv, null);/*利用判斷是否支持currentStyle(是否爲ie)
13     來經過不一樣方法獲取style*/
14     alert(finalStyle.backgroundColor);    //"red"
15     alert(finalStyle.width);              //"100px"
16     alert(finalStyle.height);             //"200px"
17 </script>
複製代碼
相關文章
相關標籤/搜索