「前篇」JavaScript如何獲取一個元素的樣式信息
關(guān)于JavaScript如何獲取一個元素的所有樣式值,及設(shè)置一個元素的樣式值,所有相關(guān)知識點,看這兩篇夠了。記住了,都很簡單的。來來來...
想要獲取一個元素的一個或者多個CSS樣式設(shè)置,這應(yīng)該是搞前端的都碰到過的一件事。如果你平時用JavaScript實現(xiàn)過一些動畫效果什么的??隙ň蜁酪粋€問題:元素內(nèi)聯(lián)樣式和動態(tài)設(shè)置的樣式容易獲取,但默認(rèn)樣式表設(shè)置的及用戶代理默認(rèn)設(shè)置的樣式獲取比較費勁。
其實現(xiàn)代碼說難不難,說容易吧,這其中還真有一些需要特別清楚的地方,今天,我這里給大家簡單聊聊,將需要注意的地方全部捋出來。
下面的講解用這個例子:

上面這個例子很簡單,看這篇文章的人沒有看不懂的,一個ID值為elem的DOM元素具有內(nèi)聯(lián)樣式和樣式表設(shè)置的默認(rèn)樣式。下面開始講重點
獲取內(nèi)聯(lián)和動態(tài)設(shè)置的樣式
獲取內(nèi)聯(lián)和動態(tài)設(shè)置的樣式方式有兩種
1. 直接訪問元素的style屬性
2. 使用getAttribute方法
一. 證明二者都無法獲得樣式表設(shè)置的樣式
有些結(jié)論可能好多人沒有證實過,模模糊糊。比如,上面提到的這兩種方式是否可以獲取樣式表設(shè)置的樣式,如font-size/background-color等。
- var elem = document.getElementById('elem')
- console.log(elem.style.fontSize)
- // 無輸出
- console.log(elem.getAttribute('style'))
- // 輸出:height:30px; width:150px;
二. 方式一需要注意的地方
直接訪問style對象的方式必須使用一種特殊的語法。
不帶連字符的屬性值,如width,可以直接訪問。
- elem.style.width
帶連字符的屬性值,需要使用駱駝表示法。如background-color
- elem.style.backgroundColor
三. 方式二需要注意的地方
使用方法來訪問style對象,然而你必須從字符串中解析出來。
使用setAttribute設(shè)置樣式時,之前動態(tài)樣式和內(nèi)聯(lián)樣式都會被重置。這一點也很好理解。因為它設(shè)置的是style。
當(dāng)然,使用getAttribute來訪問style屬性的時候,IE7也會返回一個對象,而不是帶有CSS值的一個字符串。
來簡單總結(jié)一下
上面說了兩種獲取動態(tài)樣式和內(nèi)聯(lián)樣式的方式及一些需要注意的地方。下一篇我來講一下如何使用一種跨瀏覽器方式同時獲取內(nèi)聯(lián)樣式,動態(tài)設(shè)置樣式,用戶代理以及樣式表設(shè)置的樣式。也是常用的一種方式。還有各自獲取的優(yōu)先級。
【責(zé)任編輯:龐桂玉 TEL:(010)68476606】