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将数据转换成整数的方法
Jan 04 Javascript
含有CKEditor的表单如何提交
Jan 09 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
Jul 25 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
angularjs中ng-attr的用法详解
Dec 31 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
浅谈JS如何实现真正的对象常量
Jun 25 Javascript
React实践之Tree组件的使用方法
Sep 30 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
AngularJS实现多级下拉框
Mar 25 Javascript
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实现用户在线时间统计详解
2011/10/08 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php抽象类用法实例分析
2015/07/07 PHP
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
python获取目录下所有文件的方法
2015/06/01 Python
python3中str(字符串)的使用教程
2017/03/23 Python
django 修改server端口号的方法
2018/05/14 Python
使用Scrapy爬取动态数据
2018/10/21 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
医院门卫岗位职责
2013/12/30 职场文书
运动会广播稿200字
2014/01/15 职场文书
教师节促销活动方案
2014/02/14 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
2014年安全生产责任书
2014/07/22 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书