W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
通過(guò) JavaScript 動(dòng)態(tài)修改頁(yè)面樣式。
<link rel="stylesheet" type="text/css" href="sample.css">
// var element = document.querySelector('link');
// 對(duì)應(yīng)于 element.sheet
<style type="text/css" media="screen">
body {
margin: 30px
}
</style>
// var element = document.querySelector('style');
// 對(duì)應(yīng)于 element.sheet
// 整個(gè)頁(yè)面的全部樣式(不包括行內(nèi)樣式)
document.styleSheets
<p style="color:red">Text Color</p>
// var element = document.querySelector('p');
// 對(duì)應(yīng)于 element.style
<style>
body{margin:30;}
p{color: #aaa; line-height:20px}
</style>
// 1.對(duì)應(yīng)所有樣式的列表
// body{margin:30;}
// p{color: #aaa; line-height:20px}
element.sheet.cssRules;
// 2.對(duì)應(yīng)相應(yīng)的 CSS 選擇器
// p
element.sheet.cssRules[1].selectorText;
// 3.對(duì)應(yīng)一個(gè)樣式
// p{color: #aaa; line-height:20px}
element.sheet.cssRules[1]
// 4.對(duì)應(yīng)所有樣式的鍵值對(duì)
// color: #aaa; line-height:20px
element.sheet.cssRules[1].style;
// 5.對(duì)應(yīng)的屬性值
// #aaa
element.sheet.cssRules[1].stlye.color;
element.sheet.cssRules[1].lineHeight;
其對(duì)應(yīng)于 CSSStyleDeclaration
的對(duì)象。
element.style.color;
// 獲取行內(nèi)樣式的鍵值對(duì)
element.style.color = 'red';
element.style.background = 'black';
增加樣式后得到的結(jié)果
<div style="color: red; background: black;"></div>
缺點(diǎn)
一次同時(shí)設(shè)置多個(gè)行內(nèi)樣式,其結(jié)果同 element.style
單獨(dú)設(shè)置相同。
element.style.cssText = 'color: red; background: black';
增加樣式后得到的結(jié)果
<div style="color: red; background: black;"></div>
以上兩種方式均將樣式混合在邏輯當(dāng)中。
首先需要?jiǎng)?chuàng)建對(duì)應(yīng)樣式的 CSS 樣式。
.angry {
color: red;
background: black;
}
然后再在 JavaScript 中,在對(duì)應(yīng)的事件中給元素添加需要的類(lèi)即可。
element.className += ' angry';
增加樣式后得到的結(jié)果
<div class="angry"></div>
以上方法均不適合同時(shí)更新多個(gè)樣式,通過(guò)更換樣式表的方式則可同時(shí)更改多個(gè)頁(yè)面中的樣式。將需要的大量樣式也在一個(gè)皮膚樣式表中,通過(guò) JavaScript 來(lái)直接更換樣式表來(lái)進(jìn)行樣式改變。(此方法也可用于批量刪除樣式)
<link rel="stylesheet" type="text/css" href="base.css">
<link rel="stylesheet" type="text/css" href="style1.css">
element.setAttribute('href', 'style2.css');
其對(duì)應(yīng)的為元素的行內(nèi)樣式表而不是實(shí)際樣式表。
<input type="checkbox" name="" value="">
element.style.color; // ""
line-height: 200px
將需要取出樣式的目標(biāo)元素傳入 window.getComputedStyle()
函數(shù)中,即可得到對(duì)應(yīng)元素的實(shí)際樣式。注意的是這里獲取到的樣式值為只讀屬性不可修改!
NOTE:獲取的實(shí)際為 CSSStyleDeclaration
的實(shí)例對(duì)象。 NOTE+:此方法不支持 IE9 以下版本,IE9 中需使用 element.currentStyle
來(lái)做兼容。
var style = window.getComputedStyle(element[, pseudoEle]);
<input type="checkbox" name="" value="">
window.getComputedStyle(element).color; // 'rgb(0,0,0)'
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: