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 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
屏蔽script注入小例子
Nov 12 Javascript
Javascript中拼接大量字符串的方法
Feb 05 Javascript
js控制div弹出层实现方法
May 11 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
JS 拦截全局ajax请求实例解析
Nov 29 Javascript
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
Angular2关于@angular/cli默认端口号配置的问题
Jul 15 Javascript
javascript编程开发中取色器及封装$函数用法示例
Aug 09 Javascript
Vue+SpringBoot开发V部落博客管理平台
Dec 27 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
Nov 02 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
Apr 09 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 和 MySQL 时区的一点总结
2008/03/26 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
php中file_exists函数使用详解
2015/05/08 PHP
JQuery live函数
2010/12/24 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
利用python循环创建多个文件的方法
2018/10/25 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
公司年底活动方案
2014/08/17 职场文书
高三毕业评语
2014/12/31 职场文书
病危通知书样本
2015/04/17 职场文书
道歉情书大全
2015/05/12 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
Python 中random 库的详细使用
2021/06/03 Python