zoukankan      html  css  js  c++  java
  • javascript 操作 css Rule

     1 //add   addCssRule('.bcd',{'color':'red','font-weight':'bold','font-size':'12px'},document.styleSheets[1]);
     2     function addCssRule(selector,styles,styleSheet,index){
     3         var sheets = styleSheet instanceof Array ? styleSheet : [styleSheet],
     4             style = '',
     5             declaration = '';
     6         for(var pro in styles){
     7             if(styles.hasOwnProperty(pro)){
     8                 declaration += (pro + ':' + styles[pro] + ';');
     9             }
    10         }
    11         style = selector + '{' + declaration + '}';
    12         for(var i = 0,j = sheets.length; i < j;i++){
    13             if(sheets[i].insertRule){
    14                 index = index >= 0 ? index : sheets[i]['cssRules'].length;
    15                 sheets[i].insertRule(style,index);
    16             }else if(sheets[i].addRule){  //IE
    17                 index = index >= 0 ? index : -1;  //-1为末尾
    18                 sheets[i].addRule(selector,declaration,index);
    19             }
    20         }
    21     }
    22   
    23     //modify   editCssRule('.abc',{'font-weight':'bold','font-size':'14px'},document.styleSheets[1]);
    24     function editCssRule(selector,styles,styleSheet){
    25         var sheets = styleSheet instanceof Array ? styleSheet : [styleSheet];
    26         selector = selector.toUpperCase(); // ie9以下标签选择器默认是大写   这里统一下
    27         //对大小写敏感的selector 会有问题
    28         for(var i = 0,j = sheets.length; i < j;i++){
    29             var rules = sheets[i]['cssRules'] || sheets[i]['rules'];   //ie为 rules
    30             if(!rules){ continue;}
    31             for(var m = 0,n = rules.length;m < n;m++){
    32                 if(rules[m]['selectorText'].toUpperCase() == selector){
    33                     for(var pro in styles){
    34                         if(styles.hasOwnProperty(pro)){
    35                             rules[m].style[cssCamilize(pro)] = styles[pro];
    36                         }
    37                     }
    38                 }
    39             }
    40         }
    41     }
    42   
    43     //del   delCssRule('.bcd',document.styleSheets[1]);
    44     function delCssRule(selector,styleSheet,index){
    45         var sheets = styleSheet instanceof Array ? styleSheet : [styleSheet];
    46         selector = selector.toUpperCase();
    47         for(var i = 0,j = sheets.length; i < j;i++){
    48             var rules = sheets[i]['cssRules'] || sheets[i]['rules'];   //ie为 rules
    49             if(index >=0 && index < rules.length){
    50                 sheets[i].deleteRule ? sheets[i].deleteRule(index) : sheets[i].removeRule(index);
    51             }else if(selector){
    52                for(var m = 0,n = rules.length;m < n;m++){
    53                     if(rules[m]['selectorText'].toUpperCase() == selector){
    54                        sheets[i].deleteRule ? sheets[i].deleteRule(m) : sheets[i].removeRule(m);;  //可能存在多个一样的selector  全部删除
    55                     }
    56                 }
    57             }else{
    58                 return false;
    59             }
    60         }
    61     };
    62   
    63 function cssCamilize(str){
    64         return str.replace(/-(w)/g,function($1,$2){
    65             return $2.toUpperCase();
    66         });
    67     };
    View Code
    //参考:http://www.cnblogs.com/2050/p/4029656.html
    function addCSS(cssText){
        var style = document.createElement('style'),  //创建一个style元素
            head = document.head || document.getElementsByTagName('head')[0]; //获取head元素
        style.type = 'text/css'; //这里必须显示设置style元素的type属性为text/css,否则在ie中不起作用
        if(style.styleSheet){ //IE
            var func = function(){
                try{ //防止IE中stylesheet数量超过限制而发生错误
                    style.styleSheet.cssText = cssText;
                }catch(e){
    
                }
            }
            //如果当前styleSheet还不能用,则放到异步中则行
            if(style.styleSheet.disabled){
                setTimeout(func,10);
            }else{
                func();
            }
        }else{ //w3c
            //w3c浏览器中只要创建文本节点插入到style元素中就行了
            var textNode = document.createTextNode(cssText);
            style.appendChild(textNode);
        }
        head.appendChild(style); //把创建的style元素插入到head中    
    }
    View Code
  • 相关阅读:
    MYSQL编码转换的问题latin1转utf8
    Java中的局部内部类
    Java中的抽象类和接口
    Java中的构造方法
    使用Java打印杨辉三角
    Java中的数组越界问题
    Java虚拟机中的内存分配
    关于iOS10 Xcode8真机测试项目出现的问题 "code signing is required for product type 'xxxxx' in SDK 'iOS 10.0"..
    Java语言的学习
    关于导航栏设置状态栏样式问题
  • 原文地址:https://www.cnblogs.com/lmh2072005/p/4125932.html
Copyright © 2011-2022 走看看