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 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
jQuery:节点(插入,复制,替换,删除)操作
Mar 04 Javascript
js 操作符汇总
Nov 08 Javascript
js实现仿京东2级菜单效果(带延时功能)
Aug 27 Javascript
Jquery easyui开启行编辑模式增删改操作
Jan 14 Javascript
AngularJS  $on、$emit和$broadcast的使用
Sep 05 Javascript
使用bootstrap实现多窗口和拖动效果
Sep 22 Javascript
JS实现的简易拖放效果示例
Dec 29 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 Javascript
vue组件中实现嵌套子组件案例
Aug 31 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 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-redis中文文档介绍
2013/02/07 PHP
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
使用python 获取进程pid号的方法
2014/03/10 Python
python实现无证书加密解密实例
2014/10/27 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
python实现感知器算法(批处理)
2019/01/18 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
python中adb有什么功能
2020/06/07 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
Java模拟试题
2014/11/10 面试题
宣传保护环境的公益广告词
2014/03/13 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
工作所在部门证明
2014/09/21 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers