原生javascript获取元素样式属性值的方法


Posted in Javascript onDecember 25, 2010

所以, 我们得利用IE的currentStyle和W3C的getPropertyValue获取.
elem.style.attr获取样式的方法就不说了. 先来看currentStyle方法, 此对象ie专属, 代表了在全局样式表、内嵌样式和 HTML 标签属性中指定的对象格式和样式. IE下通过它, 就可以获取元素的Css属性值.
而针对其他标准浏览器, W3C也提供了一个方法getPropertyValue, 此方法, 稍有点复杂, 首先要通过document.defaultView.getComputedStyle获得Css的样式对象, 然后通过该对象的getPropertyValue获取属性值.
上述两种方法, 无论IE还是W3C的, 有一点是相同的, 它们所获取的是元素Css属性最终值. 这一点与Css的优先级是相同的.
有一点不同的是, IE的方法是通过Css属性的驼峰式名(如textAlign)获取, 而W3C的方法是通过元素Css原来的属性名(如text-align)获取的, 所以, 在使用W3C方法时, 需要对Css属性名做个简单的处理.
基于此, 我们可以封装一个获取元素属性值的方法, 如下:

function attrStyle(elem,attr){ 
if(elem.attr){ 
//若样式存在于html中,优先获取 
return elem.style[attr]; 
}else if(elem.currentStyle){ 
//IE下获取CSS属性最终样式(同于CSS优先级) 
return elem.currentStyle[attr]; 
}else if(document.defaultView && document.defaultView.getComputedStyle){ 
//W3C标准方法获取CSS属性最终样式(同于CSS优先级) 
//注意,此法属性原格式(text-align)获取的,故要转换一下 
attr=attr.replace(/([A-Z])/g,'-$1').toLowerCase(); 
//获取样式对象并获取属性值 
return document.defaultView.getComputedStyle(elem,null).getPropertyValue(attr); 
}else{ 
return null; 
} 
}

记得精通JavaScript一书中获取元素位置那一节(忘了是第6还是第7章), 有获取元素样式属性值更详细的解释. 第一次知道document.defaultVies.getComputedStyle就是从这本书来的. 很棒的一本书, 有兴趣的朋友话一定要看看.
原方发布于Mr.Think的博客: http://mrthink.net/js-get-cssproperty/
Javascript 相关文章推荐
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
基于jQuery的仿flash的广告轮播代码
Nov 04 Javascript
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
javascript实现确定和取消提示框效果
Jul 10 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
JS判断日期格式是否合法的简单实例
Jul 11 Javascript
js enter键激发事件实例代码
Aug 17 Javascript
用JS实现简单的登录验证功能
Jul 28 Javascript
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 Javascript
vue-router动态设置页面title的实例讲解
Aug 30 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 Javascript
Vue中qs插件的使用详解
Feb 07 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
Dec 25 #Javascript
Javascript动态绑定事件的简单实现代码
Dec 25 #Javascript
浅析javascript闭包 实例分析
Dec 25 #Javascript
父子窗体间传递JSON格式的数据的代码
Dec 25 #Javascript
javascript自执行函数之伪命名空间封装法
Dec 25 #Javascript
Ext对基本类型的扩展 ext,extjs,format
Dec 25 #Javascript
JQuery live函数
Dec 24 #Javascript
You might like
PHP垃圾回收机制简单说明
2010/07/22 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
python中map的基本用法示例
2018/09/10 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
Python能做什么
2020/06/02 Python
浅析Python迭代器的高级用法
2020/07/16 Python
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
酒店温馨提示语
2015/07/14 职场文书
法制工作总结2015
2015/07/23 职场文书
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL