所謂計算樣式,就是嵌入式樣式、外部樣式表、內聯樣式綜合的樣式表現,那麼如何來獲取呢?
「dom2 級樣式」增強了document.defaultview,提供了getcomputedstyle()方法,可以呼叫最終的樣式。
這個方法接受兩個引數:要取得計算樣式的元素和乙個偽元素字串(例 如":after")。如果不需要偽元素資訊,第二個引數可以是null。
getcomputedstyle()方法返回一 個cssstyledeclaration 物件(與style 屬性的型別相同),其中包含當前元素的所有計算的樣式。
以下面這個html 頁面為例:
doctype html
>
<
html
>
<
head
>
<
title
>computed styles example
title
>
<
style
type
="text/css"
>
#mydiv
style
>
head
>
<
body
>
<
div
id="mydiv"
style
="background-color: red; border: 1px solid black"
>
div>
body
>
html
>
js:
var mydiv = document.getelementbyid("mydiv");var computedstyle = document.defaultview.getcomputedstyle(mydiv, null
);alert(computedstyle.backgroundcolor);
//"red",不是blue
後面就可以通過 computedstyle 來訪問最終的樣式了!
但是,邊框屬性可能 會也可能不會返回樣式表中實際的border 規則(opera 會返回,但其他瀏覽器不會)。存在這個差別的原因是不同瀏覽器解釋綜合(rollup)屬性(如border)的方式不同,因為設定這種屬性實際上會涉及 很多其他屬性。在設定 border 時, 實際上是設定了四個邊的邊框寬度、顏色、樣式屬性( border-left-width 、border-top-color 、border-bottom-style ,等等)。因此, 即使 computedstyle.border 不會在所有瀏覽器中都返回值,但computedstyle.borderleftwidth 會返回值!
但是!ie9之前版本不支援 getcomputedstyle() 方法;
在ie 中,每個具有style 屬性的元素還有乙個 currentstyle 屬性。這個屬性是cssstyledeclaration 的例項,包含當前元素全 部計算後
的樣式。取得這些樣式的方式也差不多,如下面的例子所示。
var mydiv = document.getelementbyid("mydiv");var computedstyle =mydiv.currentstyle;
alert(computedstyle.backgroundcolor);
//"red"
所以相容下ie9之前版本,**就是這個樣子:
var mydiv = document.getelementbyid("mydiv");var computedstyle = document.defaultview?document.defaultview.getcomputedstyle(mydiv, null
):mydiv.currentstyle;
alert(computedstyle.backgroundcolor);
//"red",不是blue
當然除了這個方法,js高程裡還有另外乙個方法,去獲採樣式表的內容,然後乙個個去呼叫樣式表,去改,但是我覺得太麻煩了,要學的去翻書哦~
js獲取css樣式
css樣式分為以下三種 1 內聯樣式 在html元素的內部,又稱行內樣式 2 內部樣式 位於 對樣式進行封裝一下 var ali document.getelementbyid myul1 getelementsbytagname li for var i 0 i基於ie瀏覽器的非行內獲取法 使用 ...
JS操作css樣式
操作內聯樣式 通過js修改元素的樣式 通過style屬性設定的樣式都是內聯樣式,而內聯樣式具有較高的優先順序,所以通過js修改的樣式往往會立即顯示 讀取元素的樣式 獲取元素當前顯示的樣式 currentstyle 語法 元素.currentstyle.樣式名 getcomputedstyle 該方法...
JS修改css樣式
通過js修改css樣式 語法 元素.style.樣式名 樣式值 注意,如果在css中的樣式名中含有 這種名稱在js中是不合法的,比如background color 需要將這總命名改為駝峰命名法 backgroundcolor 我們通過style設定的都是內聯樣式,而內聯樣式優先順序比較高,所以通過...