获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011-02-14 00:00
706 查看
可是DOM.style这种写法只能访问<DOM style=""></DOM>,这样在标签里内置的样式,如果样式写在<style type="text/css"></style>,或者.css文件里,那么就办法读到样式了。
其实呢,还有别的方法可以读到这些样式信息,方法有两种,一种是通过document.styleSheets对象,另一种是通过“最终样式”对象。其中 IE中这个对象叫做currentStyle,FF中这个对象叫做document.defaultView。我将这两个类打包了一下,做了一个用于访问 样式信息的函数,如下:
函数有两个参数:
obj:访问的对象,类型为DOM对象,或者是对象的id;
styleName: 需要访问的样式名称。类型为string,但是名称不能用"-"号,要用像style.对象的属性名一样的大小写混写名称,例如background-color要写成backgroundColor。
函数返回值为 string类型。
注意:这个方法只能访问样式文件,不能写。如果要写样式,还是要用DOM.style.XXX的方法。另外,FF下有些样式访问有问题,例如padding,margin。如果样式中设置了padding,margin等值,我们可以用marginLeft来返回值。
===========================
其实呢,还有别的方法可以读到这些样式信息,方法有两种,一种是通过document.styleSheets对象,另一种是通过“最终样式”对象。其中 IE中这个对象叫做currentStyle,FF中这个对象叫做document.defaultView。我将这两个类打包了一下,做了一个用于访问 样式信息的函数,如下:
//===========================访问样式表函数==================================== function returnStyle(obj,styleName){ var myObj = typeof obj == "string" ? document.getElementById(obj) : obj; if(document.all){ return eval("myObj.currentStyle." + styleName); } else { return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName); } }
函数有两个参数:
obj:访问的对象,类型为DOM对象,或者是对象的id;
styleName: 需要访问的样式名称。类型为string,但是名称不能用"-"号,要用像style.对象的属性名一样的大小写混写名称,例如background-color要写成backgroundColor。
函数返回值为 string类型。
注意:这个方法只能访问样式文件,不能写。如果要写样式,还是要用DOM.style.XXX的方法。另外,FF下有些样式访问有问题,例如padding,margin。如果样式中设置了padding,margin等值,我们可以用marginLeft来返回值。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> #demo{background-color:#000;padding:10px;color:#fff;width:200px;} </style> <script type="text/javascript"> //===========================访问样式表==================================== function returnStyle(obj,styleName){ var myObj = typeof obj == "string" ? document.getElementById(obj) : obj; if(document.all){ return eval("myObj.currentStyle." + styleName); } else { return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName); } } </script> <title></title> </head> <body> <div id="demo">这里是测试内容</div> <br /><br /> <a href="###" onclick="alert(returnStyle('demo','width'));">点击测试</a> </body> </html>
===========================
function getStyle( elem, name ) { //如果该属性存在于style[]中,则它最近被设置过(且就是当前的) if (elem.style[name]) return elem.style[name]; //否则,尝试IE的方式 else if (elem.currentStyle) return elem.currentStyle[name]; //或者W3C的方法,如果存在的话 else if (document.defaultView && document.defaultView.getComputedStyle) { //它使用传统的"text-Align"风格的规则书写方式,而不是"textAlign" name = name.replace(/([A-Z])/g,"-$1"); name = name.toLowerCase(); //获取style对象并取得属性的值(如果存在的话) var s = document.defaultView.getComputedStyle(elem,""); return s && s.getPropertyValue(name); //否则,就是在使用其它的浏览器 } else return null; }
相关文章推荐
- 获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
- 获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
- 获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
- JS 样式表取值函数currentStyle(IE),defaultView(FF)
- JS 样式表取值函数currentStyle(IE),defaultView(FF)
- JS从样式表取值的函数currentStyle(IE),defaultView(FF)
- 解决js获取不到 dom.style.left 类似的属性( currentStyle(IE),defaultView(FF) 样式值 )
- currentStyle IE和ff 获取外联样式(转自:http://hi.baidu.com/aganle/blog/item/86109bcf27d2b70b93457e41.html)
- currentStyle IE和ff 获取外联样式(转自:http://hi.baidu.com/aganle/blog/item/86109bcf27d2b70b93457e41.html)
- js获取指定节点对象的样式属性的值的封装函数(兼容ie、Opera和符合w3c标准浏览器)
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- js获取指定节点对象的样式属性的值的封装函数(兼容ie、Opera和符合w3c标准浏览器)
- JS基础篇--JS中使用document.defaultView.getComputedStyle()、currentStyle()方法获取CSS属性值
- js用obj.currentStyle和getComputedStyle获取非行间样式的说明
- 由于 box.style.left只能获取行内样式的值,不能获取到css中JS中样式left等值;用JS获取外部CSS样式--currentStyle和getComputedStyle的兼容写法
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox),也可以借助Node.js或者Rhino在服务端运行。
- JS获取CSS样式(style/getComputedStyle/currentStyle)
- getComputedStyle与currentStyle获取样式(style/class)