window.getComputedStyle()
行內(nèi)樣式(inline style)具有最高的優(yōu)先級茬暇,改變行內(nèi)樣式,通常會立即反映出來寡喝。但是糙俗,網(wǎng)頁元素最終的樣式是綜合各種規(guī)則計算出來的。因此预鬓,如果想得到元素現(xiàn)有的樣式巧骚,只讀取行內(nèi)樣式是不夠的,我們需要得到瀏覽器最終計算出來的那個樣式規(guī)則。
window.getComputedStyle方法劈彪,就用來返回這個規(guī)則竣蹦。它接受一個DOM節(jié)點對象作為參數(shù),返回一個包含該節(jié)點最終樣式信息的對象粉臊。所謂“最終樣式信息”草添,指的是各種CSS規(guī)則疊加后的結(jié)果。
var div = document.querySelector('div');
window.getComputedStyle(div).backgroundColor
getComputedStyle方法還可以接受第二個參數(shù)扼仲,表示指定節(jié)點的偽元素(比如:before、:after抄淑、:first-line屠凶、:first-letter等)。
var result = window.getComputedStyle(div, ':before');
注意:
1 返回的CSS值都是絕對單位肆资,比如矗愧,長度都是像素單位(返回值包括px后綴),顏色是rgb(#, #, #)或rgba(#, #, #, #)格式郑原。
2 CSS規(guī)則的簡寫形式無效唉韭,比如,想讀取margin屬性的值犯犁,不能直接讀属愤,只能讀marginLeft、marginTop等屬性酸役。
3 如果一個元素不是絕對定位住诸,top和left屬性總是返回auto。
4 該方法返回的樣式對象的cssText屬性無效涣澡,返回undefined贱呐。
5 該方法返回的樣式對象是只讀的,如果想設(shè)置樣式入桂,應(yīng)該使用元素節(jié)點的style屬性奄薇。