JS使用getComputedStyle()方法获取CSS属性值


Posted in Javascript onApril 23, 2014

在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如下:

1. obj.style:这个方法只能JS只能获取写在html标签中的写在style属性中的值(style=”…”),而无法获取定义在<style type="text/css">里面的属性。

<span style="font-family:Arial;font-size:14px;"><!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″ /> 
<title>JS获取CSS属性值</title> 
<style type=”text/css”> 
<!? 
.ss{color:#cdcdcd;} 
?> 
</style> 
</head> <body> 
<div id=”css88″ class=”ss” style=”width:200px; height:200px; background:#333333″>JS获取CSS属性值</div> 
<script type=”text/javascript”> 
alert(document.getElementById(“css88″).style.width);//200px 
alert(document.getElementById(“css88″).style.color);//空白 
</script> 
</body> 
</html> </span>

2. IE中使用的是obj.currentStyle方法,而FF是用的是getComputedStyle 方法

“DOM2级样式”增强了document.defaultView,提供了getComputedStyle()方法。这个方法接受两个参数:要取得计算样式的元素和一个伪元素字符串(例如“:after”)。如果不需要伪元素信息,第二个参数可以是null。getComputerStyle()方法返回一个CSSStyleDeclaration对象,其中包含当前元素的所有计算的样式。以下面的HTML页面为例:

<span style="font-family:Arial;font-size:14px;"><!DOCTYPE html> 
<html> 
<head> 
<title>计算元素样式</title> 
<style> 
#myDiv { 
background-color:blue; 
width:100px; 
height:200px; 
} 
</style> 
<body> 
<div id ="myDiv" style="background-color:red; border:1px solid black"></div> 
<script> 
var myDiv = document.getElementById("myDiv"); 
var computedStyle = document.defaultView.getComputedStyle(myDiv, null); 
alert(computedStyle.backgroundColor); //"red" 
alert(computedStyle.width); //"100px" 
alert(computedStyle.height); //"200px" 
alert(computedStyle.border); //在某些浏览器中是“1px solid black” 
</script> 
</body> 
</head> 
</html></span>

边框属性可能也不会返回样式表中实际的border规则(Opera会返回,但其它浏览器不会)。存在这个差别的原因是不同浏览器解释综合属性的方式不同,因为设置这种属性实际上会涉及很多其他的属性。在设置border时,实际上是设置了四个边的边框宽度、颜色、样式属性。因此,即使computedStyle.border不会在所有浏览器中都返回值,但computedStyle.borderLeftWidth则会返回值。

需要注意的是,即使有些浏览器支持这种功能,但表示值的方式可能会有所区别。例如,Firefox和Safari会返回将所有颜色转换成RGB格式。因此,即使getComputedStyle()方法时,最好多在几种浏览器中测试一下。

IE不支持getComputedStyle()方法,但它有一种类似的概念。在IE中,每个具有style属性的元素还有一个currentStyle属性。这个属性是CSSStyleDeclaration的实例,包含当前元素全部计算后的样式。取得这些样式的方法差不多,如下:

<span style="font-family:Arial;font-size:14px;">var myDiv = document.getElementById("myDiv"); 
var computedStyle = myDiv.currentStyle; 
alert(computedStyle.backgroundColor); //"red" 
alert(computedStyle.width); //"100px" 
alert(computedStyle.height); //"200px" 
alert(computedStyle.border); //undefined</span>

与DOM版本的方式一样,IE也没有返回border样式,因为这是一个综合属性。

3. 我自己在写测试case过程中写的一个简单的函数(适用于Chrome):

<span style="font-family:Arial;font-size:14px;">function getCSS(div){ 
return document.defaultView.getComputedStyle(div, null); 
//return div.currentStyle;//没用过,IE 
}</span>
Javascript 相关文章推荐
JavaScript中链式调用之研习
Apr 07 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
js的2种继承方式详解
Mar 04 Javascript
如何高效率去掉js数组中的重复项
Apr 12 Javascript
网页瀑布流布局jQuery实现代码
Oct 21 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
domReady的实现案例
Nov 23 Javascript
微信小程序实现滑动删除效果
May 19 Javascript
javascript实现Emrips反质数枚举的示例代码
Dec 06 Javascript
React中的render何时执行过程
Apr 13 Javascript
JS实现简单的抽奖转盘效果示例
Feb 16 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
javascript数字时钟示例分享
Apr 23 #Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 #Javascript
iframe实用操作锦集
Apr 22 #Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
Apr 22 #Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 #Javascript
jquery防止重复执行动画避免页面混乱
Apr 22 #Javascript
Area 区域实现post提交数据的js写法
Apr 22 #Javascript
You might like
用PHP和MySQL保存和输出图片
2006/10/09 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
php创建图像具体步骤
2017/03/13 PHP
php实现评论回复删除功能
2017/05/23 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
7个JS基础知识总结
2014/03/05 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
python实现问号表达式(?)的方法
2013/11/27 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
python有几个版本
2020/06/17 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
猫咪家具:CatsPlay
2018/11/03 全球购物
孝老爱亲模范事迹
2014/01/24 职场文书
视光学专业自荐信
2014/06/24 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
北京颐和园导游词
2015/01/30 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
演讲开场白和结束语
2015/05/29 职场文书