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 相关文章推荐
用Div仿showModalDialog模式菜单的效果的代码
Mar 05 Javascript
关于 byval 与 byref 的区别分析总结
Oct 08 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
May 27 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
跟我学习javascript的arguments对象
Nov 16 Javascript
js实现的下拉框二级联动效果
Apr 30 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
Aug 05 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
Nov 03 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
用函数读出数据表内容放入二维数组
2006/10/09 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
小小聊天室Python代码实现
2016/08/17 Python
python动态进度条的实现代码
2019/07/03 Python
python实现画循环圆
2019/11/23 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
模具专业推荐信
2013/10/30 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
三年级学生评语大全
2014/12/26 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸