原生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 面向对象 重载
May 13 Javascript
js 三级关联菜单效果实例
Aug 13 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
详解使用nvm管理多版本node的方法
Aug 30 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
Vue.js进阶知识点总结
Apr 01 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 Javascript
Vue父组件监听子组件生命周期
Sep 03 Javascript
原生JS生成指定位数的验证码
Oct 28 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开发中的中文编码问题
2013/08/08 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
php实现购物车功能(上)
2020/07/23 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
子页向父页传值示例
2013/11/27 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
巴西购物网站:Estrela10
2018/12/13 全球购物
实习教师自我鉴定
2013/09/27 职场文书
农村婚礼证婚词
2014/01/10 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
全国文明单位申报材料
2014/05/31 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
MySQL基础(二)
2021/04/05 MySQL
Redis Lua脚本实现ip限流示例
2022/07/15 Redis