原生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 相关文章推荐
jQuery 自动增长的文本输入框实现代码
Apr 02 Javascript
JS+CSS实现一个气泡提示框
Aug 18 Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 Javascript
js动态添加的DIV中的onclick事件简单实例
Jul 25 Javascript
js实现常用排序算法
Aug 09 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
JavaScript实现的商品抢购倒计时功能示例
Apr 17 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
Oct 24 Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 Javascript
微信小程序实现animation动画
Jan 26 Javascript
vue cli webpack中使用sass的方法
Feb 24 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP 调试工具Debug Tools
2011/04/30 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python贪吃蛇游戏编写代码
2020/10/26 Python
python绘制圆柱体的方法
2018/07/02 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python实现把类当做字典来访问
2019/12/16 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
税务专业毕业生自荐信
2013/11/10 职场文书
儿童生日会策划方案
2014/05/15 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS