js-style,currentStyle与getComputedStyle()
2016-05-03 17:33
549 查看
一,区别
style专指行间样式,即标签带style属性,例如:<script> window.onload=function(){ var oDiv=document.getElementById("div1"); //alert("行间样式测试:"+oDiv.style.backgroundColor); } </script> <div id="div1" style="width: 200px;height: 100px;background: red"> 这是行间样式的测试 </div>
currentStyle指全局样式表、内嵌样式和 HTML 标签属性中指定的对象格式和样式的所有样式,例如以下行间和非行间样式都为currentStyle范围:
<html> <head lang="en"> <style> /*非行间样式*/ #div1 border:1px solid #ccc; } </style> <script> window.onload=function(){ var oDiv=document.getElementById("div1"); //currentStyle能取行间和非行间样式 alert("测试:"+oDiv.currentStyle.backgroundColor+"---"+oDiv.currentStyle.border) } </script> </head> <body> <div id="div1" style="width: 200px;height: 100px;background: red"> 本div中指定的style中样式为行间样式 </div>
但是currentStyle谷歌和火狐浏览器可能不兼容。解决办法是:使用
getComputedStyle()。
Dom中getComputedStyle方法可用来获取元素中所有可用的css属性列表,以数组形式返回,并且是readonly的。IE中则用currentStyle代替。
语法:arr_style=window.getComputedStyle(elem_id,ov)
其中ov:伪元素,是否要获取伪元素属性值。如hover,active,link等属性。如果不想获取这些伪元素的属性值请填写为null。返回值类型和style一样。
一,兼容性解决
//非行间样式的兼容性解决示例 if(oDiv.currentStyle){ //针对IE alert(oDiv.currentStyle.width) }else{ //针对火狐 alert(getComputedStyle(oDiv,null).width) } //封装 function getStyle(obj,name){ if(obj.currentStyle){ //针对IE return obj.currentStyle[name]; }else{ //针对火狐 return getComputedStyle(obj,null)[name] } }
相关文章推荐
- 用于验证javascript代码性能的两种使用的方法
- JavaScript中cookie使用
- web前端面试题及答案 JavaScript篇
- js中client、offset、scroll之间的关系
- JavaScript 定时器制作一个弹窗小广告
- JS学习笔记
- JS错误处理
- javascript实现下雪效果【实例代码】
- json数据返回
- 2.JS中的数据类型与变量
- javascript 手机号码正则表达式验证函数
- 1.JavaScript如何使用
- Web前段初步——javascript(1)
- 判断是否为自然数
- javascript的列表切换【实现代码】
- 01.javascript中字符串常用操作总结、JS字符串操作大全
- JSON对象长度和遍历方法
- 简化 javaScript 代码技巧
- 判断是否为数字
- HTML/JSP实现跳转到页面指定位置