天天看點

通過js讀取元素的樣式

/*

* 通過元素.style.樣式隻能擷取到内聯樣式的值,就是style寫在元素裡面的值,不能擷取嵌入式和外聯樣式的值

* 是以如果要擷取除内聯樣式後的值,就不能通過這個擷取

* alert(box1.style.height)

* 還有其他的形式,比如擷取元素目前顯示的樣式,就是不管是外聯還是嵌入式還是内聯,誰顯示就是擷取誰的樣式

* 文法:元素.currentStyle.樣式名

* 他可以讀取目前元素正在顯示的樣式

* alert(box1.currentStyle.width);

* 這個隻有IE支援,其他浏覽器都不支援。

* 在其他浏覽器中可以使用getComputedStyle()這個方法來擷取目前元素的樣式

* 這個是window的方法,可以直接使用

* 文法:

* 需要兩個參數:

* 第一個:要擷取樣式的元素

* 第二個:可以傳遞一個僞元素,一般都傳null。

* 該方法會傳回一個對象,對象中封裝了目前元素對應的樣式

* 可以通過對象.樣式名來讀取樣式

* 如果擷取的樣式沒有設定,則會擷取到真實的值,而不是預設值

* 比如沒有設定width,他不會獲得auto,而是一個實際上的值。

* 而IE的話,不設定會預設auto

* 但是該方法不支援IE8及以下浏覽器

* 如果為了相容兩個,那麼就定義一個函數來相容兩個都可以,就是類似弄一個判斷包含在裡面

*

* 通過currentStyle和getComputedStyle()讀取到的樣式都是隻讀的

* 不能修改,如果要修改必須通過style屬性。

*/

            function getStyle(obj,name){
                        //擷取屬性可以通過.,也可以通過中括号,這裡.不适合,中括号才适合
                        //正常浏覽器的方式,具有getComputedStyle方法
                        getComputedStyle(obj,null)[name]
                        //要加window,否則是個變量,到時候會報錯
                        if(window.getComputedStyle){
                            return getComputedStyle(obj,null)[name]
                            
                        }else{
                            //IE浏覽器,具有currentStyle方法
                            return obj.currentStyle[name]
                        }
                        //第二種方式可以通過三元運算符
                        window.getComputedStyle?getComputedStyle(obj,null)[name]:obj.currentStyle[name]
                    }