原生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 相关文章推荐
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
JS判断客服QQ号在线还是离线状态的方法
Jan 13 Javascript
javascript仿百度输入框提示自动下拉补全
Jan 07 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
vue.js中指令Directives详解
Mar 20 Javascript
ES6中Generator与异步操作实例分析
Mar 31 Javascript
Vue通过input筛选数据
Oct 26 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
Vue中Axios从远程/后台读取数据
Jan 21 Javascript
ES6中定义类和对象的方法示例
Jul 31 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php类
2006/11/27 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
express 项目分层实践详解
2018/12/10 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
Python文件操作类操作实例详解
2014/07/11 Python
python使用htmllib分析网页内容的方法
2015/05/08 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
Python如何将函数值赋给变量
2020/04/28 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
法人代表证明书格式
2014/10/01 职场文书
具结保证书
2015/01/17 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript