您好,欢迎访问一九零五行业门户网

Javascript 访问样式表实现代码_javascript技巧

再记录一下 javascript访问样式表
javascript可以访问网页中元素的style属性,例如:
通过js访问style属性
alert(document.getelementbyid(main).style.backgroundcolor);
通过js改变style属性
document.getelementbyid(main).style.backgroundcolor=blue;
以上代码是我们所熟悉的,但通常我们用样式表来控制元素的外观属性,例如:
js控制cssshow
[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方法时,最好在多个浏览器上进行测试.
其它类似信息

推荐信息