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...