原生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 相关文章推荐
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
多个jQuery版本共存的处理方案
Mar 17 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
jQuery实现类似标签风格的导航菜单效果代码
Aug 25 Javascript
React组件的三种写法总结
Jan 12 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
Apr 13 Javascript
vue.js高德地图实现热点图代码实例
Apr 18 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
vue+element实现动态加载表单
Dec 13 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP反向代理类代码
2014/08/15 PHP
分享10段PHP常用代码
2015/11/11 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python实现获取操作系统版本信息方法
2015/04/08 Python
详解python之heapq模块及排序操作
2019/04/04 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
2014年幼儿园元旦活动方案
2014/02/13 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
金融与证券专业求职信
2014/06/22 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
优秀教师推荐材料
2014/12/16 职场文书
收入证明申请书
2015/06/12 职场文书
化工厂员工工作总结
2015/10/15 职场文书
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server