原生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 相关文章推荐
基于JavaScript实现 获取鼠标点击位置坐标的方法
Apr 12 Javascript
基于javascript实现图片切换效果
Apr 17 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
Aug 24 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
Dec 15 Javascript
node.js中cluster的使用教程
Jun 09 Javascript
AngularJS 中的数据源的循环输出
Oct 12 Javascript
微信小程序实现图片上传功能
May 28 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
自定义javascript验证框架示例【附源码下载】
May 31 Javascript
JointJS JavaScript流程图绘制框架解析
Aug 15 Javascript
JS typeof fn === 'function' && fn()详解
Aug 22 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中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
javascript 继承实现方法
2009/08/26 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
Javascript的闭包详解
2014/12/26 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
jQuery实现视频展示效果
2020/05/30 jQuery
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
python基础教程之udp端口扫描
2014/02/10 Python
python字符串连接方式汇总
2014/08/21 Python
Python实现的ini文件操作类分享
2014/11/20 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
破解安装Pycharm的方法
2018/10/19 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
如何使用python传入不确定个数参数
2020/02/18 Python
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
中西医专业毕业生职业规划书
2014/02/24 职场文书
安全生产月宣传标语
2014/10/06 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书