在頁面內(nèi)用JS操作CSS除非用AJAX,但操作頁面內(nèi)的樣式的話,是可以的。操作樣式分為改變直接樣式,改變className和改變cssText三種
我們提供的服務(wù)有:網(wǎng)站設(shè)計、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、那坡ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的那坡網(wǎng)站制作公司
一、局部改變樣式
調(diào)用方法:
改變className
div id="demo"測試/div
script
document.getElementById('demo').className="test";
/script
改變直接樣式
div id="demo"測試/div
script
document.getElementById('obj').style.backgroundColor="#003366";
/script
二、全局改變樣式
可以通過改變外鏈樣式的的href的值實現(xiàn)網(wǎng)頁樣式的實時切換
link rel = "stylesheet" type="text/css" id="css" href="firefox.css" /
span on click="javascript:document.getElementById('css').href = 'ie.css'"點我改變樣式/span
使用css控制頁面有4種方式,分別為行內(nèi)樣式(內(nèi)聯(lián)樣式)、內(nèi)嵌式、鏈接式、導(dǎo)入式。
行內(nèi)樣式(內(nèi)聯(lián)樣式)即寫在html標(biāo)簽中的style屬性中,如div style="width:100px;height:100px;"/div
內(nèi)嵌樣式即寫在style標(biāo)簽中,例如style type="text/css"div{width:100px; height:100px}/style
鏈接式即為用link標(biāo)簽引入css文件,例如link href="test.css" type="text/css" rel="stylesheet" /
導(dǎo)入式即為用import引入css文件,例如@import url("test.css")
如果想用javascript獲取一個元素的樣式信息,首先想到的應(yīng)該是元素的style屬性。但是元素的style屬性僅僅代表了元素的內(nèi)聯(lián)樣式,如果一個元素的部分樣式信息寫在內(nèi)聯(lián)樣式中,一部分寫在外部的css文件中,通過style屬性是不能獲取到元素的完整樣式信息的。因此,需要使用元素的計算樣式才獲取元素的樣式信息。
語法:元素.style.樣式名=樣式值
注意:如果CSS的樣式名中含有-,這種名稱在JS中是不合法的,比如 background-color 。需要將這種樣式名修改為駝峰命名法:去掉-,然后將-后的第一個字母大寫,比如 backgroundColor
我們通過style屬性設(shè)置的樣式都是內(nèi)聯(lián)樣式,而內(nèi)聯(lián)樣式有較高的優(yōu)先級,所以通過JS修改的樣式往往會立即顯示
但是如果在樣式中寫了!important,則此時樣式會有最高的優(yōu)先級,即使通過JS也不能覆蓋該樣式,此時將會導(dǎo)致JS修改樣式失效
所以盡量不要為樣式添加!important
語法:元素.style.樣式名
通過style屬性設(shè)置和讀取的都是內(nèi)聯(lián)樣式,無法讀取樣式表中的樣式
語法:元素.currentStyle.樣式名
如果當(dāng)前元素沒有設(shè)置該樣式,則獲取它的默認值
例如: box1.currentStyle.width
這個方法是window的方法,可以直接使用需要兩個參數(shù)
第一個:要獲取樣式的元素
第二個:可以傳遞一個偽元素,一般都傳null
該方法會返回一個對象,對象中封裝了當(dāng)前元素對應(yīng)的樣式
可以通過對象﹒樣式名來讀取樣式
如果獲取的 樣式?jīng)]有設(shè)置 ,則會獲取到真實的值,而不是默認值
比如:沒有設(shè)置width,它不會獲取到auto,而是 一個長度
注意:通過currentStyle和getComputedstyle()讀取到的樣式都是只讀的,不能修改,如果要修改必須通過style屬性
參數(shù):
obj 要獲取樣式的元素
name 要獲取的樣式名
一、獲取內(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屬性就可以,因為element.style屬性返回的是類似數(shù)組的一組樣式屬性及對應(yīng)值,因此訪問具體樣式的時候可以采取兩種方式即“ele.style.屬性名稱”和“ele.style['屬性名稱']”。但是,要注意的是,針對css樣式里background-color;margin-left之類的短杠相接的屬性名稱,在使用style屬性獲取設(shè)置樣式的時候名稱要改為駝峰式,如ele.style.backgroundColor.
二、因為第一種方法,即使用style屬性只能獲取到內(nèi)聯(lián)樣式。但是,實際情況是文檔在現(xiàn)在都基本遵循分離思想,樣式基本都是外部鏈接,所以三種樣式都要考慮到的,這時就要使用其他方法進行獲取,而在這種情況下進行樣式獲取時,不同的瀏覽器又有不同的處理方式(主要是ie和非ie),因此根據(jù)瀏覽器可以分為兩種方式:
(2.1)非ie瀏覽器中,使用document.defaultView對象的getComputedStyle(ele,null/偽類)方法,該方法接受兩個參數(shù),第一個為要考察的元素,第二個則要根據(jù)情況,如果只是考察元素本身則為null,如果要
考察偽類,則為響應(yīng)的偽類。該方法獲取到的為元素應(yīng)用的最終樣式組合,同樣是類似數(shù)組的一個實例。
(2.2)在ie瀏覽器中,對getComputedStyle()方法不支持,但是針對每個標(biāo)簽元素都有一個近似于style屬性的currentStyle的屬性,且用法和style用法相同。只不過獲取到的樣式范圍不一樣。currenStyle獲取到的和getComputedStyle()方法相接近。
為了在處理時達到兼容,可以根據(jù)這兩種不同的處理方式創(chuàng)建一個函數(shù)來達到兼容目的,使得不管在那種瀏覽器中,都可以成功獲取樣式。如下所示:
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
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
js是無法直接修改css文件的,但可以通過取對象的方式修改對象的樣式,通常有兩種方法:
1、改變className,但首先在樣式表中預(yù)設(shè)定樣式類。
例如:document.getElementById('obj').className='...';
2、改變cssText。
例如:document.getElementById('obj').style.height='100px';
JS可以使用css屬性來進行樣式修改,并且不僅可以修改單一屬性,也可以同時修改多個屬性。
案例
以下小案例使用JQuery作為演示。
前提: html頁面首先必須引入JQuery,放置在body體最后的位置。例如:
script?type="text/javascript"?src=""/script
html部分代碼
p
我是一個段落,我沒有背景顏色的,但是JQuery會給我增加背景顏色。
/p
button
點擊我,給上面段落添加黃色背景顏色。
/button
JQuery代碼
$("button").click(function(){
$("p").css("background-color",?"yellow");
});
修改多個屬性
$("button").click(function(){
$("p").css({"background-color":?"yellow",?"font-size":?"200%"});
});
結(jié)論與解釋:
首先使用Jquery選擇器進行元素選擇 -?$("button")
為該元素綁定點擊事件 -?click
click中的匿名函數(shù)修改css屬性。
在css屬性的修改中,p段落有了黃色背景; 多個屬性修改,不但有了黃色背景而且字體是之前的兩倍大小。
注意事項:
可以不用非要綁定事件,在本案例中,綁定事件是為了更好地演示Jquery如何操作css屬性。
修改單一屬性和多個屬性的寫法是有區(qū)別的,多個屬性使用{},屬性與值之間用:分割,屬性與屬性之間用,分割。