JavaScript訪問樣式表代碼
更新時(shí)間:2010年10月15日 19:10:50 作者:
在web頁(yè)面中,我們經(jīng)常需要通過修改樣式(style)來(lái)達(dá)到更好的用戶體驗(yàn),需要的朋友可以參考下。
比如:當(dāng)我們將鼠標(biāo)移動(dòng)到一個(gè)圖標(biāo)上的時(shí)候,圖標(biāo)會(huì)出現(xiàn)一些動(dòng)畫效果(漸變放大、閃動(dòng)、更換顏色等),而這一切的友好效果基本上都跟樣式(style)有關(guān),所以這一篇,我學(xué)習(xí)JavaScript對(duì)style的操作。
技術(shù)關(guān)鍵點(diǎn):style。這一篇要求我們對(duì)CSS樣式有一定的了解。(讀者可以google一下CSS的相關(guān)內(nèi)容)
操作步驟:
1、頁(yè)面代碼(包括JS代碼)如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Style Example</title>
<style type="text/css">
div.special
{
background-color:Red;
height:50px;
width:50px;
}
</style>
<script type="text/javascript">
function getBackGroundColor() {
var oDiv = document.getElementById("div1");
alert(oDiv.style.backgroundColor);
}
</script>
</head>
<body>
<div id="div1" class="special"></div>
<input type="button" value="Get BackGround Color" onclick="getBackGroundColor();"/>
</body>
</html>
JS代碼中獲得了div對(duì)象,并輸出了div對(duì)象的背景顏色,一切看起來(lái)都那么完美,可是效果總是讓我們失望,如下:

這樣看來(lái),JavaScript以這種方式去訪問CSS樣式無(wú)法達(dá)到效果,原因:CSS數(shù)據(jù)并非存儲(chǔ)在style屬性中,而是存儲(chǔ)在類中。所以接下來(lái)要做的:就是怎么樣去訪問CSS類?
2、幸運(yùn)的是,我們找到了document.styleSheets集合。document.styleSheets包含了html頁(yè)面中所有樣式表的引用和所有的<style>元素。
因?yàn)闉g覽器的不同,訪問樣式表中單獨(dú)的規(guī)則(規(guī)則:指定是CSS類,例如上面html代碼中的div.special)的方法是不同的。DOM為每一個(gè)樣式表指定一個(gè)cssRules的集合,但是IE卻把這個(gè)集合命名為rules。所以在獲取樣式集合之前,代碼需要做一個(gè)技巧性的改動(dòng):
每個(gè)規(guī)則都包含selectorText特性,div.special就是上面html中CSS規(guī)則的selectorText的值。規(guī)則還包含style屬性,這個(gè)時(shí)候就可以通過style屬性獲取背景顏色了。來(lái)看代碼吧:
function getBackGroundColor() {
var oCSSRules = document.styleSheets[0].cssRules || document.styleSheets[0].rules;
alert(oCSSRules[0].style.backgroundColor);
}
代碼效果:

3、這個(gè)時(shí)候,你可用通過修改樣式來(lái)改變背景顏色,但是最好不要這樣做,因?yàn)槟愀牡舻氖荂SS類,其他引用了改CSS類的元素也會(huì)改變背景顏色,所以如果需要修改樣式,做好直接修改單個(gè)元素的style屬性,比如:document.getElementById("div1").style.backgroundColor="Blue";
技術(shù)關(guān)鍵點(diǎn):style。這一篇要求我們對(duì)CSS樣式有一定的了解。(讀者可以google一下CSS的相關(guān)內(nèi)容)
操作步驟:
1、頁(yè)面代碼(包括JS代碼)如下:
復(fù)制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Style Example</title>
<style type="text/css">
div.special
{
background-color:Red;
height:50px;
width:50px;
}
</style>
<script type="text/javascript">
function getBackGroundColor() {
var oDiv = document.getElementById("div1");
alert(oDiv.style.backgroundColor);
}
</script>
</head>
<body>
<div id="div1" class="special"></div>
<input type="button" value="Get BackGround Color" onclick="getBackGroundColor();"/>
</body>
</html>
JS代碼中獲得了div對(duì)象,并輸出了div對(duì)象的背景顏色,一切看起來(lái)都那么完美,可是效果總是讓我們失望,如下:

這樣看來(lái),JavaScript以這種方式去訪問CSS樣式無(wú)法達(dá)到效果,原因:CSS數(shù)據(jù)并非存儲(chǔ)在style屬性中,而是存儲(chǔ)在類中。所以接下來(lái)要做的:就是怎么樣去訪問CSS類?
2、幸運(yùn)的是,我們找到了document.styleSheets集合。document.styleSheets包含了html頁(yè)面中所有樣式表的引用和所有的<style>元素。
因?yàn)闉g覽器的不同,訪問樣式表中單獨(dú)的規(guī)則(規(guī)則:指定是CSS類,例如上面html代碼中的div.special)的方法是不同的。DOM為每一個(gè)樣式表指定一個(gè)cssRules的集合,但是IE卻把這個(gè)集合命名為rules。所以在獲取樣式集合之前,代碼需要做一個(gè)技巧性的改動(dòng):
復(fù)制代碼 代碼如下:
oCSSRules = document.styleSheets[0].cssRules || document.styleSheets[0].rules;
每個(gè)規(guī)則都包含selectorText特性,div.special就是上面html中CSS規(guī)則的selectorText的值。規(guī)則還包含style屬性,這個(gè)時(shí)候就可以通過style屬性獲取背景顏色了。來(lái)看代碼吧:
復(fù)制代碼 代碼如下:
function getBackGroundColor() {
var oCSSRules = document.styleSheets[0].cssRules || document.styleSheets[0].rules;
alert(oCSSRules[0].style.backgroundColor);
}
代碼效果:

3、這個(gè)時(shí)候,你可用通過修改樣式來(lái)改變背景顏色,但是最好不要這樣做,因?yàn)槟愀牡舻氖荂SS類,其他引用了改CSS類的元素也會(huì)改變背景顏色,所以如果需要修改樣式,做好直接修改單個(gè)元素的style屬性,比如:document.getElementById("div1").style.backgroundColor="Blue";
您可能感興趣的文章:
- javascript實(shí)現(xiàn)動(dòng)態(tài)加載CSS
- IE8中使用javascript動(dòng)態(tài)加載CSS的解決方法
- 動(dòng)態(tài)加載腳本提升javascript性能
- javascript:FF/Chrome與IE動(dòng)態(tài)加載元素的區(qū)別說明
- javascript如何動(dòng)態(tài)加載表格與動(dòng)態(tài)添加表格行
- javascript中動(dòng)態(tài)加載js文件多種解決辦法總結(jié)
- javascript 動(dòng)態(tài)修改樣式和層疊樣式表代碼
- JavaScript動(dòng)態(tài)加載樣式表的方法
相關(guān)文章
javascript實(shí)現(xiàn)相同事件名稱,不同命名空間的調(diào)用方法
這篇文章主要介紹了javascript實(shí)現(xiàn)相同事件名稱,不同命名空間的調(diào)用方法,涉及javascript命名空間及事件調(diào)用的技巧,需要的朋友可以參考下2015-06-06
JavaScript 刪除或抽取字符串指定字符的方法(極為常用)
這篇文章主要給大家分享了極為常用的JavaScript 刪除或抽取字符串指定字符的所有方法,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2021-12-12
連續(xù)操作HTMLElement對(duì)象圖文解決方法
Object.prototype.***不能用作在HTMLElement對(duì)象上,如本后面的抓圖所示。2008-03-03
js?通過Object.defineProperty()?定義和控制對(duì)象屬性
這篇文章主要介紹了js?通過Object.defineProperty()?定義和控制對(duì)象屬性,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08
Javascript String對(duì)象擴(kuò)展HTML編碼和解碼的方法
Javascript String對(duì)象擴(kuò)展HTML編碼和解碼的代碼2009-06-06
(推薦一個(gè)超好的JS函數(shù)庫(kù))S.Sams Lifexperience ScriptClassLib
(推薦一個(gè)超好的JS函數(shù)庫(kù))S.Sams Lifexperience ScriptClassLib...2007-04-04
關(guān)于layui flow loading占位圖的實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于layui flow loading占位圖的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-09-09

