1. 程式人生 > >通過js讀取元素的樣式

通過js讀取元素的樣式

括號 元素 get computed 必須 dst 設置 alert auto

/*
* 通過元素.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]
                    }

通過js讀取元素的樣式