原生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 相关文章推荐
firefox浏览器下javascript 拖动层效果与原理分析代码
Dec 04 Javascript
js比较和逻辑运算符的介绍
Mar 10 Javascript
jQuery 文本框得失焦点的简单实例
Feb 19 Javascript
javascript Array 数组常用方法
Apr 05 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
jquery日历插件datepicker用法分析
Jan 22 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
javascript设计模式之策略模式学习笔记
Feb 15 Javascript
JS实现页面打印功能
Mar 16 Javascript
vue 打包后的文件部署到express服务器上的方法
Aug 09 Javascript
vue引入静态js文件的方法
Jun 20 Javascript
vue 通过base64实现图片下载功能
Dec 19 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
PHP中多线程的两个实现方法
2016/10/14 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
基于JavaScript实现轮播图效果
2021/01/02 Javascript
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
python logging日志模块的详解
2017/10/29 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
旅游管理专业学生求职信
2013/09/28 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
文化产业实施方案
2014/06/07 职场文书
个人党性锻炼总结
2015/03/05 职场文书
初中语文教学研修日志
2015/11/13 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
Redis基本数据类型List常用操作命令
2022/06/01 Redis