原生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 相关文章推荐
超强的IE背景图片闪烁(抖动)的解决办法
Sep 09 Javascript
实例详解angularjs和ajax的结合使用
Oct 22 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
js滚轮事件兼容性问题需要注意哪些
Nov 15 Javascript
JS高级运动实例分析
Dec 20 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
js中的触发事件对象event.srcElement与event.target详解
Mar 15 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
Sep 07 Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 Javascript
layui实现数据表格点击搜索功能
Mar 26 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 Javascript
js实现ajax的用户简单登入功能
Jun 18 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
Python中暂存上传图片的方法
2015/02/18 Python
python 调用HBase的简单实例
2016/12/18 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
Python3实现转换Image图片格式
2018/06/21 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
PHP如何自定义函数
2016/09/16 面试题
怎样写演讲稿
2014/01/04 职场文书
房地产项目建议书
2014/03/12 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
一年级评语大全
2014/04/23 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书