js 操作css实现代码

 更新时间:2009年06月11日 22:16:16   作者:  
虽说jquery支持css选择器,可以把一些css规则放在js里,js无论如何是比css灵活的。但是js修改的是dom的htmlelement的stlye,是一个操作而非规则。
当我们需要的是一条规则的时候,总不能在每次dom发生变化的时候去执行这个操作,否则也太效率低下了。
好在dom中css rules也是可以修改的。不过不同浏览器的对于css rules的接口描述也不同,其中ie中以类似hash table的方式,而ff以数组方式。
从可编程性上说,ie的接口描述更讨程序员喜欢,不过从逻辑上说,ff显然更为合理。
我提供了类似于ie的方式对两套代码进行简单包装,不过ie在dom的css removeRule之后并不能确定同步的把规则兑现。所以最好用规则覆盖的方式而非remove。
需要注意的是,在使用改js函数的时候,页面上至少要有一个style标签。下面是代码及示例。
复制代码 代码如下:

<style>
#a:
{
color: blue;
}
</style>
<style>
#a:
{
background: gray;
}
</style>
<script>
function addCSSRule(key,value){
var css = document.styleSheets[document.styleSheets.length-1];
css.cssRules ?
(css.insertRule(key+"{"+value+"}", css.cssRules.length)) :
(css.addRule(key,value)) ;
}
function removeCSSRule(key){
for(var i = 0; i < document.styleSheets.length; i++){
var css = document.styleSheets[i];
css.cssRules ?
(function(){
for(var j = 0; j < css.cssRules.length; j++){
if(css.cssRules[j].selectorText==key){
css.deleteRule(j);
}
}
})() :
(css.removeRule(key)) ;
}
}
</script>
<div id="a">
abc
</div>
<button onclick='addCSSRule("#a","color:red;background:yellow;")'>
add</button>
<button onclick='removeCSSRule("#a")'>
remove</button>

相关文章

  • thinkphp实现无限分类(使用递归)

    thinkphp实现无限分类(使用递归)

    这篇文章主要介绍了在使用递归的情况下thinkphp实现无限分类,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)

    对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)

    对象无length属性时IE6/7中无法将其转换成伪数组(ArrayLike) 的解决方法,需要的朋友可以参考下。
    2011-07-07
  • JavaScript在多浏览器下for循环的使用方法

    JavaScript在多浏览器下for循环的使用方法

    JavaScript语言在不同的浏览器的下有存在细微的差异,但不像DOM操作差异那么大,现在为大家列举出其中一个"for循环"的差异,并介绍如何有效的解决这种差异
    2012-11-11
  • JavaScript其他类型的值转换为布尔值的规则详解

    JavaScript其他类型的值转换为布尔值的规则详解

    在JavaScript中,所有的值在逻辑上下文中都会被转换为布尔类型(Boolean),理解这些转换规则对开发者来说至关重要,尤其是在条件判断、短路运算、逻辑非(!)等场景下,正确掌握布尔转换可以避免潜在的bug,本文将详细介绍 JavaScript 其他类型的值是如何转换为布尔值的
    2025-04-04
  • JS如何通过FileReader获取.txt文件内容

    JS如何通过FileReader获取.txt文件内容

    今天小编就为大家分享一篇JS如何通过FileReader获取.txt文件内容,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • JS出现404错误原理及解决方案

    JS出现404错误原理及解决方案

    这篇文章主要介绍了JS出现404错误原理及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 详解ECMAScript6入门--Class对象

    详解ECMAScript6入门--Class对象

    本篇文章主要介绍了详解ECMAScript6入门--Class对象,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Js动态设置rem来实现移动端字体的自适应代码

    Js动态设置rem来实现移动端字体的自适应代码

    这篇文章主要介绍了Js动态设置rem来实现移动端字体的自适应代码,代码简单易懂非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • JavaScript中执行上下文和执行栈

    JavaScript中执行上下文和执行栈

    这篇文章主要介绍了JavaScript中执行上下文和执行栈,执行上下文是评估和执行JavaScript代码的环境的抽象概念,更多相关介绍,感兴趣的朋友可以参考一下
    2022-09-09
  • 深入浅析同源策略和跨域访问

    深入浅析同源策略和跨域访问

    同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现
    2015-11-11

最新评论