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

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