js訪問CSS最終計算樣式

2022-03-03 09:58:03 字數 2086 閱讀 1758

所謂計算樣式,就是嵌入式樣式、外部樣式表、內聯樣式綜合的樣式表現,那麼如何來獲取呢?

「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設定的都是內聯樣式,而內聯樣式優先順序比較高,所以通過...