JS - 獲取CSS屬性值 getComputedStyle()與currentStyle()、style()方法
在對網頁進行除錯的過程中,經常會用到js來獲取元素的CSS樣式,
1. obj.style:
這個方法JS只能獲取寫在html標籤中的寫在style屬性中的值(style=”…”),而無法獲取定義在<style type="text/css">裡面的屬性。
2.Window.getComputedStyle()
- 返回一個物件,該物件在應用活動樣式表並解析這些值可能包含的任何基本計算後報告元素的所有CSS屬性的值。
- 私有的CSS屬性值可以通過物件提供的API或通過簡單地使用CSS屬性名稱進行索引來訪問。
- getComputedStyle獲取的是計算機(瀏覽器)計算後的樣式,但是不相容IE6、7、8
語法:
let style = window.getComputedStyle(element, [pseudoElt]);
element: 用於獲取計算樣式的Element。
pseudoElt 可選:指定一個要匹配的偽元素的字串。必須對普通元素省略(或null
)。
返回的style
是一個實時的 CSSStyleDeclaration
物件,當元素的樣式更改時,它會自動更新本身。
(CSSStyleDeclaration
介面表示一個物件,它是一個 CSS 宣告塊,CSS 屬性鍵值對的集合。它暴露了樣式資訊和各種與樣式相關的方法和屬性。)
3.Element.currentStyle
Element.currentStyle
是一個與Window.getComputedStyle()方法功能相同的屬性。這個屬性實現在舊版本的IE瀏覽器中.
屬性判斷法、版本檢測法來解決瀏覽器間的相容性問題
function getStyle(obj, arr) {
if (obj.currentStyle) {
return obj.currentStyle[arr]; //針對ie
} else {
return document.defaultView.getComputedStyle(obj, null)[arr];
}
}
or:
function getStyle(obj, attr) {
return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, null)[attr];
}
注意:
- 如果用以上的方法獲取某個元素的複合樣式,例如background,那麼就不要用上面那種方式獲取,在不同瀏覽器間有相容性問題。用上面的方法獲得單一樣式,而不要用來獲取複合樣式。
- 使用以上方法,注意不要多按空格
- 使用以上方法,不要獲取未設定後的樣式,因為瀏覽器間不相容
- 在火狐4.0之前,有個bug,如果getComputedStyle後面不跟引數,會出現問題,所以有些人寫成getComputedStyle(obj, false),那個false就是為了解決這個bug。這裡的bug也可以寫成0,或者其他任何引數都可以。不過目前火狐的瀏覽器都比較高,因此這個問題已經不是很常見了。
相關文章
- getComputedStyle()方法如何獲取float屬性值
- js中style,currentStyle和getComputedStyle的區別JS
- 獲取元素CSS值之getComputedStyle方法熟悉CSS
- getComputedStyle與currentStyle
- getComputedStyle()函式如何獲取border等符合屬性值函式
- js獲取元素的方法與屬性JS
- css屬性與js中style物件的屬性對應表CSSJS物件
- js如何獲取給定屬性的屬性值JS
- js便籤筆記(7)——style、currentStyle、getComputedStyle區別介紹【轉載】JS筆記
- js如何獲取樣式表中定義的css屬性值JSCSS
- 獲取dom的最終的css屬性值CSS
- getComputedStyle()獲取樣式值
- JavaScript 獲取 checked 屬性值JavaScript
- javascript如何獲取屬性值JavaScript
- 獲取json串裡的某個屬性值JSON
- C#反射設定屬性值和獲取屬性值C#反射
- jQuery css()設定和獲取元素css屬性值程式碼例項jQueryCSS
- 在url中通過屬性名獲取屬性值
- 強制修改CSS的屬性styleCSS
- style方式獲取元素的border和background等符合屬性
- js如何獲取某一類type屬性值表單元素JS
- js_獲取與設定css變數的值JSCSS變數
- js獲取css屬性知多少?客官來擼就知曉!JSCSS
- javascript獲取物件直接量中的屬性和屬性值JavaScript物件
- DedeCMS讓channelartlist支援currentstyle屬性
- js獲取非內部取樣式表中定義的屬性值JS
- 設定和獲取元素固有屬性值
- JavaScript使用name屬性值獲取元素物件JavaScript物件
- CSS 屬性賦值CSS賦值
- js獲取checkbox核取方塊checked屬性值為true核取方塊JS
- lambda方法引用獲取欄位屬性
- C#獲取某個物件的屬性值C#物件
- jQuery獲取id屬性值具有點的元素jQuery
- id屬性值帶有點(.)jQuery如何獲取jQuery
- 使用jQuery獲取iframe元素的value屬性值jQuery
- 獲取類屬性值,當前類,父類
- JavaScript style 屬性JavaScript
- HTML style 屬性HTML