Javascript 访问样式表实现代码

 更新时间:2009年08月20日 02:08:05   作者:  
Javascript访问样式表--又一篇好文章
再记录一下 Javascript访问样式表
Javascript可以访问网页中元素的style属性,例如:
<div id="main" style="background-color:red"></div>

通过js访问style属性
alert(document.getElementById("main").style.backgroundColor);

通过js改变style属性
document.getElementById("main").style.backgroundColor="blue";

以上代码是我们所熟悉的,但通常我们用样式表来控制元素的外观属性,例如:

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


此时如果我们再使用 alert(document.getElementById("main").style.backgroundColor);

则只能获得一个空值,所以只能通过js去访问样式表了.
document.styleSheets可以获得样式表的集合,因为浏览器之间有很大不同,访问样式表的单独规则也不同.DOM为每一个样式表指定一个cssRules集合,Mozilla和Safari正确实现了这个标准,不过可惜IE中定义这个集合为rules,因此可以使用以下代码来获得正确的对象:
var oCssRules=document.styleSheets[0].cssRules||document.styleSheets[0].rules;

这样就可以获得不同浏览器的CSS集合了.
通过以下JS代码来获得样式表中的样式:
复制代码 代码如下:

function GetCSS()
{
var oCssRules=document.styleSheets[0].cssRules||document.styleSheets[0].rules;
alert(oCssRules[0].style.backgroundColor);
}

styleSheets[0]表示第一个样式表引用,oCssRules[0]表示第一个样式规则(即#main{}的内容),通过style属性来访问具体的规则.
同理,更改该样式表规则代码如下:
复制代码 代码如下:

function SetCSS()
{
var oCssRules=document.styleSheets[0].cssRules||document.styleSheets[0].rules;
oCssRules[0].style.backgroundColor="red";
oCssRules[0].style.marginLeft="20px";
oCssRules[0].style.marginTop="20px";
}


但是需要注意的是,因为很多元素有可能关联同一个样式表,所以改变时需要慎重.
除了元素的style对象和css规则外,每个元素还有一个最终样式,最终样式用来告诉我们元素最后是如何显示在屏幕上的,也就是style和css重合计算后的样式.IE和DOM有两种方式来访问此样式,IE中通过currentStyle属性,DOM中使用getComputedStyle()方法.
JS获得最终样式的方法如下:
复制代码 代码如下:

function GetFinalCSS()
{
var oDiv=document.getElementById("main");
//访问style属性
alert(oDiv.style.backgroundColor);
//IE方法
alert(oDiv.currentStyle.backgroundColor);
//DOM方法,第二个参数为伪元素,如:hover,first-leeter之类
//alert(document.defaultView.getComputeStyle(oDiv,null).backgroundColor);
}

我经常使用currentStyle来获得样式,省去了访问样式表的麻烦
需要注意的是currentStyle是只读属性,不能够对其赋值,因为其是多种样式综合计算后的样式规则,这点并不难理解.
对于getComputedStyle方法,可以通过document.defaultView来调用(IE和Safari不支持此方法).所以,当使用getComputedStyle方法时,最好在多个浏览器上进行测试.

相关文章

  • 如何正确理解javascript的模块化

    如何正确理解javascript的模块化

    模块化在项目中十分的重要,一个复杂的项目肯定有很多相似的功能模块,如果每次都需要重新编写模块肯定既费时又耗力。但是引用别人编写模块的前提是要有统一的“打开姿势”,如果每个人有各自的写法,那么肯定会乱套,下面介绍几种JS的模块化的规范。
    2017-03-03
  • JS实现随机生成字符串(可指定长度)的示例代码

    JS实现随机生成字符串(可指定长度)的示例代码

    本文主要介绍了JS实现随机生成字符串(可指定长度)的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 浅谈几种常用的JS类定义方法

    浅谈几种常用的JS类定义方法

    下面小编就为大家带来一篇浅谈几种常用的JS类定义方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 页面回到顶部的三种实现(锚标记,js)

    页面回到顶部的三种实现(锚标记,js)

    本文不再介绍,大家根据自己需要选择其中的一种即可,总之简约最美的,能减少代码就减少代码,能不调用的就别调用,要不是天缘博客的文章都是牛长也不会添加这个功能
    2012-10-10
  • JS实现仿FLASH效果的竖排导航代码

    JS实现仿FLASH效果的竖排导航代码

    这篇文章主要介绍了JS实现仿FLASH效果的竖排导航代码,涉及JavaScript基于定时函数动态设置页面元素样式的技巧,具有FLASH变换效果,需要的朋友可以参考下
    2015-09-09
  • js实现分割上传大文件

    js实现分割上传大文件

    这篇文章主要为大家详细介绍了js实现分割上传大文件的相关资料,需要的朋友可以参考下
    2016-03-03
  • BootStrop前端框架入门教程详解

    BootStrop前端框架入门教程详解

    Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。这篇文章主要介绍了BootStrop前端框架入门教程详,需要的朋友可以参考下
    2016-12-12
  • ie与firefox下的event使用说明与详细区别

    ie与firefox下的event使用说明与详细区别

    event是ie自带的一个对象,而ff中不存在该对象,只能通过传递参数(并且惟一)的方式来实现event.
    2009-10-10
  • 小程序绑定用户方案优化小结

    小程序绑定用户方案优化小结

    这篇文章主要介绍了小程序绑定用户方案优化小结,该类小程序在使用之前就需要绑定用户信息。常见于线下门店类功能性小程序。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 微信小程序实现原生步骤条

    微信小程序实现原生步骤条

    这篇文章主要为大家详细介绍了微信小程序实现原生步骤条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07

最新评论