「后篇」JavaScript如何獲取一個元素的樣式信息
上一篇講了兩種獲取樣式的方式。
1. 通過直接訪問style對象
2. 通過方法getAttribute
這兩種方法都沒法獲取用戶代理或者樣式表設(shè)置的樣式值。今天我來講一種跨瀏覽器的方式來獲取所有的與DOM相關(guān)的樣式值。
一. 跨瀏覽器方法
currentStyle對象是一個特定于IE的對象。它包含了一個元素的所有支持的和可用的CSS屬性的一個集合。它期待駱駝表示 格式的一個值 。
比如:fontFamily而不是font-family
所以,這里,如果是支持這個對象的瀏覽器調(diào)用的話,就使用CSSPROP。
從代碼中,可以看出,其它瀏覽器,使用的是window.getComputedStyle方法。該方法也可以通過document.defalutView.getComputedStyle來訪問。這個方法接受兩個參數(shù),元素和一個偽元素,后者通常為空(或者一個空字符串"")。
二. 獲取屬性的優(yōu)先級
竟然是能獲取所有與DOM相關(guān)的樣式屬性,那必然有一個優(yōu)先級的問題。
- <style>
- #elem{font-size:23px;}
- </style>
- <input id ="elem" style="font-size:18px;"/>
- elem.style.fontSize = '12px';
- console.log(getStyle(elem, "fontSize", "font-size"))
- // 輸出12px
當在幾處同時設(shè)置一個屬性時,getStyle方法獲取永遠是那個起使用的,這一點要高度關(guān)注。
getStyle取值的優(yōu)先級是:
1. 動態(tài)設(shè)置的
2. 內(nèi)聯(lián)設(shè)置的
3. 樣式表設(shè)置的
4. 瀏覽器默認設(shè)置的