實現乙個獲取元素樣式的函式getStyle

2021-08-31 02:10:08 字數 1059 閱讀 1685

2009-1-21 13:58:33

元素的css樣式,除了包括內聯的(即通過style屬性加上的)樣式定義外,還有 頁面嵌入的css和外部引入的css兩種方式。但在js中通過el.style.***只能獲取的內聯的樣式屬性,這就存在比較大的侷限性。好在瀏覽器都 提供了另外的方式來獲取以其它方式定義的樣式屬性,在ie中有currentstyle、ff等w3c標準的瀏覽器中有 getcomputedstyle。

為便於操作,現在的很多js-lib中都對此做了封裝,但很多時候我們並不需要引入什麼lib,我們需要的僅僅是乙個getstyle函式來獲取元素的當前樣式定義。參考了幾個js-lib的**,決定實現乙個簡化版的getstyle函式。該函式目標為:滿足大多數需要、跨瀏覽器、**簡潔、效能優良 。本著這幾點要求,本人花了乙個小時的時間才搞定,主要利用了「js邏輯運算子特性、**"編譯",函式的即時執行」幾個小技巧,寫到這裡,以備以後使用,如果能對哪位朋友有幫助,那當然更好。

**如下:

var

getstyle=function

()));"

,         "style=='float' && (style='"

,         f ? 'cssfloat'

: 'stylefloat'

,         "');return el.style[style] || "

,         f ? 'window.getcomputedstyle(el, null)[style]'

: 'el.currentstyle[style]'

,         ' || null;'

].join(''

)); 

}(); 

//使用示例:

var el=document

.getelementbyid('test'

); getstyle(el,'line-height'

); getstyle(el,'color'

); getstyle(el,'float'

);

如何獲取頁面元素的某乙個樣式

sfsd 平常我們都是使用dom.style.display這種方式去獲取某乙個樣式,可這樣就會有個問題,如果我的樣式是定義在class中的,這種方式就無能為力了。還好瀏覽器提供給我們解決方法,那就是使用currentstyle屬性或者是document.defaultview.getcompute...

2 2 封裝乙個獲取元素的樣式的方法

一 設定和獲取行內的樣式 box div 設給元素置樣式 注意這設定的是行內樣式 var obox document.getelementbyid box obox.style.width 200px obox.style.height 200px obox.style.background red...

實現給元素刪除乙個樣式的同時,新增另外乙個樣式

在很多時候,我們需要給網頁中的一些元素不停的切換樣式,那麼要怎樣實現給元素刪除乙個樣式的同時,新增另外乙個樣式 a.ele removeclass classname ele addclass classname b.us removeclass classname us addclass clas...