getComputedStyle与currentStyle获取样式(style/class)


Posted in Javascript onMarch 19, 2013

大家都知道,用document.getElementById(‘element').style.xxx可以获取元素的样式信息,可是它获取的只是DOM元素style属性里的样式规则,对于通过class属性引用的外部样式表,就拿不到我们要的信息了。

DOM标准里有个全局方法getComputedStyle,可以获取到当前对象样式规则信息,如:getComputedStyle(obj,null).paddingLeft,就能获取到对象的左内边距。但是事情还没完,万恶的IE不支持此方法,它有自己的一个实现方式,那就是currentStyle,不同于全局方法getComputedStyle,它是作为DOM元素属性存在的,如:obj.currentStyle.paddingLeft,在IE中就获取到对象的左内边距了,兼容性的写法如下:

return window.getComputedStyle ? window.getComputedStyle(obj,null).paddingLeft : obj.currentStyle.paddingLeft;

这样,就能在IE及FF中返回对象的当前样式信息了。

特别注意一点:如果要获取当前对象的颜色信息,IE返回的是16进制的'#ffffff',而FF返回的是rgb(255,255,255)

用js的style属性可以获得html标签的样式,但是不能获取非行间样式。那么怎么用js获取css的非行间样式呢?在IE下可以用currentStyle,而在火狐下面我们需要用到getComputedStyle。下面是一个小示例:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>js用currentStyle和getComputedStyle获取css样式</title> 
<style type="text/css"> 
#div1{width:100px; height:100px; background:red;} 
</style> 
<script type="text/javascript"> 
function getStyle(obj, attr) 
{ 
if(obj.currentStyle) 
{ 
return obj.currentStyle[attr]; 
} 
else 
{ 
return getComputedStyle(obj,false)[attr]; 
} 
} 
window.onload=function() 
{ 
var oDiv=document.getElementById('div1'); 
alert(getStyle(oDiv,'width')) 
} 
</script> 
</head> 
<body> 
<div id="div1"></div> 
</body> 
</html>
Javascript 相关文章推荐
基于jquery的cookie的用法
Jan 10 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
extjs 04_grid 单击事件新发现
Nov 27 Javascript
使用JS 清空File控件的路径值
Jul 08 Javascript
JS原型链怎么理解
Jun 27 Javascript
浅析location.href跨窗口调用函数
Nov 22 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
Vue+element-ui 实现表格的分页功能示例
Aug 18 Javascript
javascript跳转与返回和刷新页面的实例代码
Nov 20 Javascript
JavaScript类的继承多种实现方法
May 30 Javascript
vue中实现弹出层动画效果的示例代码
Sep 25 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
Mar 19 #Javascript
input输入框的自动匹配(原生代码)
Mar 19 #Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 #Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 #Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 #Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 #Javascript
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 #Javascript
You might like
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
JScript的条件编译
2007/05/29 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
Python实现多线程下载文件的代码实例
2014/06/01 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
详解Python中的type和object
2018/08/15 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
文史专业毕业生自荐信
2013/11/17 职场文书
专业技术职务聘任书
2014/03/29 职场文书
入职担保书怎么写
2014/05/12 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers
实战Python爬虫爬取酷我音乐
2022/04/11 Python
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL