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 相关文章推荐
Firebug 字幕文件JSON地址获取代码
Oct 28 Javascript
JavaScript鼠标特效大全
Sep 13 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
Jan 13 Javascript
Vue使用vue-cli创建项目
Sep 01 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
Jul 30 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
微信小程序开发之转发分享功能
Oct 22 Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 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
smarty实例教程
2006/11/19 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
Python中join和split用法实例
2015/04/14 Python
python计算时间差的方法
2015/05/20 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
python多进程读图提取特征存npy
2019/05/21 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
Python中如何引入第三方模块
2020/05/27 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
上课玩手机检讨书
2014/02/08 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
水毁工程实施方案
2014/04/01 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers