全部代码均在Chrome下测试javascript
//方法一 var styleSheets = document.styleSheets; //styleSheets.length可返回样式表的个数 var styleSheet = document.styleSheets[index]; //方法二 var styleSheet = document.getElementsByTagName('link')[index].sheet; var styleSheet = document.getElementsByTagName('style')[index].sheet;
相对应的对象类型:css
styleSheets
--------------------- StyleSheetList()
html
styleSheet
---------------------- CSSStyleSheet()
java
相关的属性:数组
<!--这是三个StyleSheet--> <link rel="stylesheet" type="text/css" href="css/reset.css"> <link rel="stylesheet" type="text/css" href="css/index.css"> <style type="text/css"></style>
//javascript获取一个样式表,及相关属性 var styleSheet = styleSheets[2]; styleSheet.ownerNode//返回link节点,或者style节点 styleSheet.deleteRule(index); styleSheet.removeRule(index); styleSheet.insertRule(string, index);//一次只能添加一个CSSRule //例如 styleSheet.insertRule('.red {color: red;}', 0);//添加到第一个 styleSheet.insertRule('.red {color: red;}', styleSheet.rules.length);//添加到最后一个
var cssRules = styleSheet.cssRules; //cssRules.length可返回CSS规则的个数 var cssRules = styleSheet.rules; var cssRule = cssRules[index];
相对应的对象类型:测试
cssRules
--------------------- CSSRuleList()
code
cssRule
---------------------- CSSStyleRule()
htm
相关的属性:对象
/*这是三个CSSRule*/ .red { color: red; } .blue { color: blue; } .yellow { color: yellow; }
//javascript获取一个样式,及相关属性 var cssRule = cssRules[0]; cssRule.cssText === '.red { color: red; }' cssRule.selectorText === '.red' cssRule.parentRule === null cssRule.parentStyleSheet === styleSheet
var styles = cssRule.style; //styles.length可返回花括弧中样式的个数
相对应的对象类型:索引
styles
--------------------- CSSStyleDeclaration()
相关的属性:
/*这是一个CSSRule,里面有三个style*/ .font { color : red; font-size : 20px; font-weight : bold; }
//用javascript获取花括弧中的样式,以及相关的属性 var styles = cssRule.style; styles.cssText === 'color : red;font-size : 20px;font-weight : bold;' //可修改 styles.length === 3 styles[0] === 'color' //不可修改 styles[1] === 'font-size' //不可修改 styles[2] === 'font-weight' //不可修改 styles.color === 'red' //可修改 styles.fontSize === '20px' //可修改 styles.fontWeight === 'bold' //可修改 styles.parentRule === cssRule
function addCSSRules(ssIndex, crIndex, styleSheetRules){ var default_ssIndex = document.styleSheets.length - 1; ssIndex = ssIndex === 'default'? default_ssIndex: ssIndex > default_ssIndex? default_ssIndex: ssIndex; var styleSheet = document.styleSheets[ssIndex]; var default_crIndex = styleSheet.cssRules.length; crIndex = crIndex === 'default'? default_crIndex: crIndex > default_crIndex? default_crIndex: crIndex; var i; for(i = 0; i < styleSheetRules.length; i++){ var ruleText = styleSheetRules[i].selector + '{'; for(var style in styleSheetRules[i].styles){ ruleText += style + ':' + styleSheetRules[i].styles[style] + ';'; } ruleText += '}'; styleSheet.insertRule(ruleText, crIndex); crIndex++; } }
ssIndex
是样式表的索引,从0开始,若是数值超出了styleSheets.length - 1
则取最后一个样式表,也能够传入'default'
取最后一个样式表。
crIndex
是CSS规则的索引,从0开始,若是数值超出了cssRules.length
则添加到最后,也可传入'default'
添加到最后。
styleSheetRules
是一个数组,styles
中的键值对按照CSS规则书写。
例如:
addCSSRules(4, 'default', [ { selector: '.insert', styles: { color: 'silver', 'font-size': '20px' } }, { selector: '#add', styles: { width: '120px', 'background-color': '#ff4' } } ]);