js中样式表获取样式表对象[object CSSStyleSheet]及操作样式表对象的CSS规则[object CSSStyleRule]

2017-11-19 22:00:58 4,459 views

1.document.styleSheets

document.styleSheets获取的是包含所有的样式表的[object StyleSheetList],具有length属性,表示样式表的数量
通过document.styleSheets[0]获取[object CSSStyleSheet]样式表对象.
 
也可以通过如下方法获取样式表对象

  function getStyleSheet(element){
        return element.sheet||element.styleSheet;
        //其他浏览器支持sheet,ie支持styleSheet来取得样式表对象
      }
var link=document.getElementsByTagName("link")[0];
var sheet=hetStyleSheet(link);

关于获取到的sheet与document.styleSheets的关系
console.log(sheet==document.styleSheets[0]);//true
 
 
 

2.包含CSS规则([object CSSRuleList])

2.1 CSSRule对象

表示样式表中的每一条规则,[object CSSStyleRule]对象包含以下常用属性:

2.1.1 cssText,

返回整条规则对应的文本,ie9+才支持,只读属性

2.1.2 selectorText,

返回当前规则的选择符文本, 例如#box

2.1.3 style,

这是一个CSSStyleDeclaration  。   style.cssText,返回样式信息
测试代码:

var sheets=document.styleSheets;//[object StyleSheetList集合
var sheet=sheets[0];//[object CSSStyleSheet],样式表
var rules=sheet.cssRules||sheet.rules;//单个样式表中的所有规则
var rule=rules[0];//样式表表中的第一条规则
console.log(rules);//[object CSSRuleList]
console.log(rule);//[object CSSStyleRule]
rule.cssText="#box { width:300px; height: 200px; background: red; }"
//设置无效
console.log(rule.cssText);
//返回包含选择符文本和围绕样式信息的花括号,只读属性,ie9+才支持
//"#box { width: 200px; height: 200px; background: red; }"
var sty=document.getElementById("sty");
var she=sty.sheet||sty.styleSheet;
console.log(she==sheets[0])//true

2.2创建规则,向现有样式表中添加新规则

2.2.1   insertRule()方法

接收2个参数,规则文本和表示在哪里插入规则的索引,ie9以下不支持 

2.2.2 addRule()方法

//接收3个参数,选择符文本和CSS样式信息,一个可选参数:插入规则的位置。仅对ie有效,最多可以使用addRule()添加4095条样式规则,超出这个上限的调用将出错。

2.2.3跨浏览器添加规则

var sheet=document.styleSheets[0];
  function insertRules(sheet,selectorText,cssText,position){
    sheet.insertRule?sheet.insertRule(selectorText
      +"{"+cssText+"}",position):sheet.addRule(selectorText,cssText,position);
  }
  insertRules(sheet,"body","background:blue",0);

2.3.1删除规则:从样式表中删除规则

2.3.2 deleteRule()

接收一个参数,要删除的规则的位置

2.3.3removeRule();

第一个参数是要删除的规则的索引。仅ie支持

2.3.4 跨浏览器删除规则

var sheet=document.styleSheets[0];
  function deleteRule(sheet,index){
sheet.deleteRule?sheet.deleteRule(index):sheet.removeRule(index);
}
deleteRule(sheet,0);

 

3

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。