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 相关文章推荐
各情景下元素宽高的获取实现代码
Sep 13 Javascript
js replace替换所有匹配的字符串
Feb 13 Javascript
ajax提交表单实现网页无刷新注册示例
May 08 Javascript
JS实现点击上移下移LI行数据的方法
Aug 05 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
Bootstrap 粘页脚效果
Mar 28 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
js实现文字截断功能
Sep 14 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
在js中做数字字符串补0(js补零)
Mar 25 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
May 24 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
模仿OSO的论坛(一)
2006/10/09 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python函数中定义参数的四种方式
2014/11/30 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
python实现人脸签到系统
2020/04/13 Python
python实现学生通讯录管理系统
2021/02/25 Python
大学生励志演讲稿
2014/04/25 职场文书
学校政风行风整改方案
2014/10/25 职场文书
2015年党性分析材料
2014/12/19 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Python+DeOldify实现老照片上色功能
2022/06/21 Python