向当前style sheet中插入一个新的style实现方法

 更新时间:2013年04月01日 09:22:35   作者:  
今天为了临时解决页面样式问题,为了方便,直接在这个公共的js里面向style sheet插入新的style rule,感兴趣的朋友可以出纳卡下哈
很少会插入一个新的style rule,今天为了临时解决页面样式问题,需要更新很多页面的一些样式,这些页面都引用了一个公共的js,为了方便,直接在这个公共的js里面向style sheet插入新的style rule。

先看代码:
复制代码 代码如下:

/**
* Add a stylesheet rule to the document (may be better practice, however,
* to dynamically change classes, so style information can be kept in
* genuine styesheets (and avoid adding extra elements to the DOM))
* Note that an array is needed for declarations and rules since ECMAScript does
* not afford a predictable object iteration order and since CSS is
* order-dependent (i.e., it is cascading); those without need of
* cascading rules could build a more accessor-friendly object-based API.
* @param {Array} decls Accepts an array of JSON-encoded declarations
* @example
addStylesheetRules([
['h2', // Also accepts a second argument as an array of arrays instead
['color', 'red'],
['background-color', 'green', true] // 'true' for !important rules
],
['.myClass',
['background-color', 'yellow']
]
]);
*/
function addStylesheetRules (decls) {
var style = document.createElement('style');
document.getElementsByTagName('head')[0].appendChild(style);
if (!window.createPopup) { /* For Safari */
style.appendChild(document.createTextNode(''));
}
var s = document.styleSheets[document.styleSheets.length - 1];
for (var i=0, dl = decls.length; i < dl; i++) {
var j = 1, decl = decls[i], selector = decl[0], rulesStr = '';
if (Object.prototype.toString.call(decl[1][0]) === '[object Array]') {
decl = decl[1];
j = 0;
}
for (var rl=decl.length; j < rl; j++) {
var rule = decl[j];
rulesStr += rule[0] + ':' + rule[1] + (rule[2] ? ' !important' : '') + ';\n';
}
if (s.insertRule) {
s.insertRule(selector + '{' + rulesStr + '}', s.cssRules.length);
}
else { /* IE */
s.addRule(selector, rulesStr, -1);
}
}
}

复制代码 代码如下:

addStylesheetRules(["div.content", ["color": "#000"], ["border-width","1px"], ["border-style", "solid"]])

执行后当前document的head标签内,多了一个style
复制代码 代码如下:

<style>
div.content{color:#000;border:1px solid}
</style

知道怎么调用了吧,每次调用都会插入一个新的style,所以最好调用一次,插入多个rule
复制代码 代码如下:

addStylesheetRules(
[selector, [attr, value], …],
[selector, [attr, value], …]
);

主要用到两个方法
标准方法:stylesheet.insertRule(rule, index)
rule:被插入的rule,如 div.content{color:#000}
index: 插入顺序,先后顺序会影响样式的。从0开始
firefox、chrome、opera、safri、ie从ie9开始也支持这个方法
ie的stylesheet.addRule (selector, styleDef [, positionIndex]);
selector:如div.content
styleDef:如color:#000
positionIndex:默认-1,插入到末尾
ie、safari、chrome支持这个方法
您可能感兴趣的文章:

相关文章

  • node.js Web应用框架Express入门指南

    node.js Web应用框架Express入门指南

    这篇文章主要介绍了node.js Web应用框架Express入门指南,从安装到各种技术的应用,都进行了讲解,是一篇不错的Express入门教程,需要的朋友可以参考下
    2014-05-05
  • JS原生带小白点轮播图实例讲解

    JS原生带小白点轮播图实例讲解

    下面小编就为大家带来一篇JS原生带小白点轮播图实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Echarts地图添加引导线效果(labelLine)

    Echarts地图添加引导线效果(labelLine)

    这篇文章主要介绍了Echarts地图添加引导线效果(labelLine),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • JavaScript初学者需要了解10个小技巧

    JavaScript初学者需要了解10个小技巧

    在之前的编程语言排行榜中,我们曾介绍过转正在即的JavaScript语言,正如文章中阐明的那样,JavaScript不仅是最具活力的脚本语言,还是是最有用的编程语言之一。
    2010-08-08
  • 微信小程序中的behaviors

    微信小程序中的behaviors

    behaviors是用于组件间代码共享的特性, 类似一些编程语言中的'mixin'或者'traits',这篇文章主要介绍了微信小程序中的behaviors,需要的朋友可以参考下
    2024-08-08
  • 如何在uniapp项目中嵌套H5 页面

    如何在uniapp项目中嵌套H5 页面

    在UniApp中可以通过使用 web-view 组件来嵌入H5页面,大概思路是在该页面的template部分添加web-view组件,设置src属性为所需嵌入的H5页面地址,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • JavaScript实现筛选数组

    JavaScript实现筛选数组

    这篇文章主要为大家详细介绍了JavaScript实现筛选数组,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • js将html页面转为pdf两种方法

    js将html页面转为pdf两种方法

    最近遇到的需求,把html转成pdf文件下载导出,下面这篇文章主要给大家介绍了关于js将html页面转为pdf的两种方法,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-08-08
  • 利用JavaScript实现检测用户是否在线功能

    利用JavaScript实现检测用户是否在线功能

    这篇文章主要为大家详细介绍了如何利用JavaScript实现检测用户是否在线功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-12-12
  • bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?

    bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?

    这篇文章主要介绍了bootstrap-treeview实现多级树形菜单,后台JSON格式如何组织,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07

最新评论