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 相关文章推荐
jQuery前台数据获取实现代码
Mar 16 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
jQuery select自动选中功能实现方法分析
Nov 28 Javascript
jQuery多选框选择数量限制方法
Feb 08 Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 Javascript
vue基于mint-ui的城市选择3级联动的示例
Oct 25 Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
May 13 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
JS如何生成动态列表
Sep 22 Javascript
javascript的setTimeout()使用方法总结
Nov 20 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+jQuery实现动态展示信息
2011/10/08 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
PHP中设置时区方法小结
2012/06/03 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
babel的使用及安装配置教程
2018/02/22 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
如何在python中实现随机选择
2019/11/02 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
大学生职业生涯规划范文
2014/01/08 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
留学顾问岗位职责
2014/04/14 职场文书
四年级小学生评语
2014/12/26 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
vue封装数字翻牌器
2022/04/20 Vue.js