解析js如何獲取css樣式
一、獲取內(nèi)聯(lián)樣式
<div id ="myDiv" style="width:100px;height:100px;background-color:red; border:1px solid black;"></div> <script> var myDiv = document.getElementById("myDiv"); alert(myDiv.style.width);//100px alert(myDiv.style['height']);//100px var style=myDiv.style; alert(style.backgroundColor);//red myDiv.style.backgroundColor='green';//myDiv背景色變?yōu)榫G色 </script>
在這種情況下,獲取和設(shè)置樣式只靠style屬性就可以,因?yàn)閑lement.style屬性返回的是類似數(shù)組的一組樣式屬性及對(duì)應(yīng)值,因此訪問具體樣式的時(shí)候可以采取兩種方式即“ele.style.屬性名稱”和“ele.style['屬性名稱']”。但是,要注意的是,針對(duì)css樣式里background-color;margin-left之類的短杠相接的屬性名稱,在使用style屬性獲取設(shè)置樣式的時(shí)候名稱要改為駝峰式,如ele.style.backgroundColor.
二、因?yàn)榈谝环N方法,即使用style屬性只能獲取到內(nèi)聯(lián)樣式。但是,實(shí)際情況是文檔在現(xiàn)在都基本遵循分離思想,樣式基本都是外部鏈接,所以三種樣式都要考慮到的,這時(shí)就要使用其他方法進(jìn)行獲取,而在這種情況下進(jìn)行樣式獲取時(shí),不同的瀏覽器又有不同的處理方式(主要是ie和非ie),因此根據(jù)瀏覽器可以分為兩種方式:
(2.1)非ie瀏覽器中,使用document.defaultView對(duì)象的getComputedStyle(ele,null/偽類)方法,該方法接受兩個(gè)參數(shù),第一個(gè)為要考察的元素,第二個(gè)則要根據(jù)情況,如果只是考察元素本身則為null,如果要 考察偽類,則為響應(yīng)的偽類。該方法獲取到的為元素應(yīng)用的最終樣式組合,同樣是類似數(shù)組的一個(gè)實(shí)例。
(2.2)在ie瀏覽器中,對(duì)getComputedStyle()方法不支持,但是針對(duì)每個(gè)標(biāo)簽元素都有一個(gè)近似于style屬性的currentStyle的屬性,且用法和style用法相同。只不過獲取到的樣式范圍不一樣。currenStyle獲取到的和getComputedStyle()方法相接近。
為了在處理時(shí)達(dá)到兼容,可以根據(jù)這兩種不同的處理方式創(chuàng)建一個(gè)函數(shù)來達(dá)到兼容目的,使得不管在那種瀏覽器中,都可以成功獲取樣式。如下所示:
<style type="text/css"> #myDiv { background-color:blue; width:100px; height:200px; } </style> <div id ="myDiv" style="background-color:red; border:1px solid black;"></div> <script> var myDiv = document.getElementById("myDiv"); var finalStyle = myDiv.currentStyle ? myDiv.currentStyle : document.defaultView.getComputedStyle(myDiv, null);/*利用判斷是否支持currentStyle(是否為ie) 來通過不同方法獲取style*/ alert(finalStyle.backgroundColor); //"red" alert(finalStyle.width); //"100px" alert(finalStyle.height); //"200px" </script>
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
在ASP.NET MVC項(xiàng)目中使用RequireJS庫的用法示例
這篇文章主要介紹了在ASP.NET MVC項(xiàng)目中使用RequireJS的用法示例,文中主要講解了網(wǎng)站項(xiàng)目的一些基本目錄結(jié)構(gòu)思想,并給出了一個(gè)半自動(dòng)壓縮的例子,的朋友可以參考下2016-02-02JavaScript實(shí)現(xiàn)隨機(jī)數(shù)生成器(去重)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)隨機(jī)數(shù)生成器,生成不重復(fù)的隨機(jī)數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10layui中使用jquery控制radio選中事件的示例代碼
今天小編就為大家分享一篇layui中使用jquery控制radio選中事件的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08Javascript原生ajax請(qǐng)求代碼實(shí)例
這篇文章主要介紹了Javascript原生ajax請(qǐng)求代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02