首頁  >  文章  >  web前端  >  js如何取得css樣式的方法

js如何取得css樣式的方法

怪我咯
怪我咯原創
2017-03-29 15:01:171052瀏覽


一、取得內嵌樣式

<p id ="myp" style="width:100px;height:100px;background-color:red; border:1px solid black;"></p>
<script>
  var myp = document.getElementById("myp");

  alert(myp.style.width);//100px

  alert(myp.style[&#39;height&#39;]);//100px

  var style=myp.style;
  alert(style.backgroundColor);//red

  myp.style.backgroundColor=&#39;green&#39;;//myp背景色变为绿色 
</script>



在這種情況下,取得和設定樣式只靠style屬性就可以,因為element.style屬性回傳的是類似陣列的一組樣式屬性及對應值,因此存取具體樣式的時候可以採取兩種方式即「ele.style.屬性名稱」和「ele.style['屬性名稱']」。但是,要注意的是,針對css樣式裡background-color;margin-left之類的短槓相接的屬性名稱,在使用style屬性取得設定樣式的時候名稱要改為駝峰式,如ele.style.backgroundColor.

二、因為第一種方法,即使用style屬性只能取得到內聯樣式。 但是,實際情況是文檔在現在都基本遵循分離思想,樣式基本上都是外部鏈接,所以三種樣式都要考慮到的,這時就要使用其他方法進行獲取,而在這種情況下進行樣式取得時,不同的瀏覽器又有不同的處理方式(主要是ie和非ie),因此根據瀏覽器可以分成兩種方式:

(2.1) ie瀏覽器中,使用document.defaultView物件的getComputedStyle(ele,null/偽類別 )方法,該方法接受兩個參數,第一個為要考察的元素,第二個則要根據情況,如果只是考察元素本身則為null,如果要考察偽類,則為響應的偽類。此方法取得到的為元素應用的最終樣式組合,同樣是類似陣列的一個實例。

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

為了在處理時達到相容,可以根據這兩種不同的處理方式建立一個函數來達到相容目的,使得不管在那種瀏覽器中,都可以成功取得樣式。如下圖所示:

<style type="text/css">
#myp {
  background-color:blue;
  width:100px;
  height:200px;
}
</style>
<p id ="myp" style="background-color:red; border:1px solid black;"></p>
<script>
  var myp = document.getElementById("myp");
  var finalStyle = myp.currentStyle ? myp.currentStyle : document.defaultView.getComputedStyle(myp, null);/*利用判断是否支持currentStyle(是否为ie)
  来通过不同方法获取style*/
  alert(finalStyle.backgroundColor);  //"red"
  alert(finalStyle.width);       //"100px"
  alert(finalStyle.height);       //"200px"
</script>


#

以上是js如何取得css樣式的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn