作家
登录

Javascript 访问样式表实现代码

作者: 来源:www.28hudong.com 2013-03-30 02:23:43 阅读 我要评论

再记录一下 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"; 以上代码是我们所熟悉的,但通常我们用样式表来控制元素的外观属性,例如: JS控制CSS #main { margin-left:200px; margin-top:70px; width:200px; height:100px; background-color999999; border:1px solid #666666; } Show [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 语言精粹学习笔记第1/2页

非常好的想法包括函数,弱类型,动态对象和一个富有表现力的对象字面量的表示法, 坏的想法包括基于全局变量的编程模型。 JavaScript的函数是基于词法作用域的顶级对象。Javascript是第一个成为主流的Lambda语言。>>>详细阅读


本文标题:Javascript 访问样式表实现代码

地址:http://www.17bianji.com/kaifa2/JS/28244.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)