通過 JavaScript 動態(tài)修改頁面樣式。
<link rel="stylesheet" type="text/css" href="sample.css">
// var element = document.querySelector('link');
// 對應(yīng)于 element.sheet
<style type="text/css" media="screen">
body {
margin: 30px
}
</style>
// var element = document.querySelector('style');
// 對應(yīng)于 element.sheet
// 整個頁面的全部樣式(不包括行內(nèi)樣式)
document.styleSheets
<p style="color:red">Text Color</p>
// var element = document.querySelector('p');
// 對應(yīng)于 element.style
<style>
body{margin:30;}
p{color: #aaa; line-height:20px}
</style>
// 1.對應(yīng)所有樣式的列表
// body{margin:30;}
// p{color: #aaa; line-height:20px}
element.sheet.cssRules;
// 2.對應(yīng)相應(yīng)的 CSS 選擇器
// p
element.sheet.cssRules[1].selectorText;
// 3.對應(yīng)一個樣式
// p{color: #aaa; line-height:20px}
element.sheet.cssRules[1]
// 4.對應(yīng)所有樣式的鍵值對
// color: #aaa; line-height:20px
element.sheet.cssRules[1].style;
// 5.對應(yīng)的屬性值
// #aaa
element.sheet.cssRules[1].stlye.color;
element.sheet.cssRules[1].lineHeight;
其對應(yīng)于 CSSStyleDeclaration
的對象。
element.style.color;
// 獲取行內(nèi)樣式的鍵值對
element.style.color = 'red';
element.style.background = 'black';
增加樣式后得到的結(jié)果
<div style="color: red; background: black;"></div>
缺點(diǎn)
一次同時(shí)設(shè)置多個行內(nèi)樣式,其結(jié)果同 element.style
單獨(dú)設(shè)置相同。
element.style.cssText = 'color: red; background: black';
增加樣式后得到的結(jié)果
<div style="color: red; background: black;"></div>
以上兩種方式均將樣式混合在邏輯當(dāng)中。
首先需要創(chuàng)建對應(yīng)樣式的 CSS 樣式。
.angry {
color: red;
background: black;
}
然后再在 JavaScript 中,在對應(yīng)的事件中給元素添加需要的類即可。
element.className += ' angry';
增加樣式后得到的結(jié)果
<div class="angry"></div>
以上方法均不適合同時(shí)更新多個樣式,通過更換樣式表的方式則可同時(shí)更改多個頁面中的樣式。將需要的大量樣式也在一個皮膚樣式表中,通過 JavaScript 來直接更換樣式表來進(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');
其對應(yīng)的為元素的行內(nèi)樣式表而不是實(shí)際樣式表。
<input type="checkbox" name="" value="">
element.style.color; // ""
line-height: 200px
將需要取出樣式的目標(biāo)元素傳入 window.getComputedStyle()
函數(shù)中,即可得到對應(yīng)元素的實(shí)際樣式。注意的是這里獲取到的樣式值為只讀屬性不可修改!
NOTE:獲取的實(shí)際為 CSSStyleDeclaration
的實(shí)例對象。 NOTE+:此方法不支持 IE9 以下版本,IE9 中需使用 element.currentStyle
來做兼容。
var style = window.getComputedStyle(element[, pseudoEle]);
<input type="checkbox" name="" value="">
window.getComputedStyle(element).color; // 'rgb(0,0,0)'
更多建議: