currentStyle、runtimeStyle、getComputedStyle的区别
来源:互联网 发布:淘宝技术删除中差评 编辑:程序博客网 时间:2024/05/16 05:35
所以必须认识到在那些使用外部Css文件的页面中,如果用style赋值,如obj.style=“color:red”;显然效果是正确的,其中的奥秘确是只是在该对象的tag上多添加了一个style属性,按照由小到大的优先级呈现罢了。
2、obj.currentStyle就强大多了,他能够获取关于这个节点所有位置的style,但是他也按照优先级,说穿了就是显示的是什么他就是指向哪一个style,如下代码字体优先是显示blue的,那currentStyle.color就是blue,当然此时style.color也会是blue。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>testStyle</title> <style> .lala{ color:yellow; } </style> </head> <body> <div id="tt" style="color:blue;" class="lala">1111</div> </body> <script> alert(document.getElementById("tt").currentStyle.color); </script> </html>
若去掉以上<div>中的style为<div id="tt" class="lala">1111</div>,那么currentStyle.color就根据优先级变成了yellow,但是此时style.color为空。
3、runtimeStyle简单的说就是你可以对一个节点的样式赋值,他将成为最高优先级的节点样式。
如:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style> .lala{ color:yellow; }</style> </head> <body> <div id="tt" style="color:blue;" class="lala">1111</div> </body> <script> document.getElementById("tt").runtimeStyle.color="black"; alert(document.getElementById("tt").currentStyle.color); alert(document.getElementById("tt").runtimeStyle.color); alert(document.getElementById("tt").style.color); </script> </html>
此时页面显示字的颜色是runtimeStyle赋值后的black。但是只有currentStyle.color和runtimeStyle本身能够取到这个值,style.color取到的依然是tag中的blue。
currentStyle:获取计算后的样式,也叫当前样式、最终样式。
优点:可以获取元素的最终样式,包括浏览器的默认值,而不像style只能获取行间样式,所以更常用到。
注意:不能获取复合样式如background属性值,只能获取单一样式如background-color等。
alert (oAbc.currentStyle);
非常遗憾的是,这个好使的东西也不能被各大浏览器完美地支持。准确地说,在我测试的浏览器中,IE8和Opera 11弹出了“object CSSStyleDeclaration”;FF 12、chrome 14、safari 5则弹出“undefined”。
虽然currentStyle无法适用于所有浏览器,但是可以根据以上测试的结果来区分开支持、不支持的浏览器,然后再找到兼容的写法。
var oAbc = document.getElementById("abc");if(oAbc.currentStyle) {//IE、Operaalert("我支持currentStyle");} else {//FF、chrome、safarialert("我不支持currentStyle");}
其实在FF浏览器中我们可以使用getComputedStyle(obj,false)来达到与IE下currentStyle相同的效果。
getComputedStyle(obj,false):在FF新版本中只需要第一个参数,即操作对象,第二个参数写“false”也是大家通用的写法,目的是为了兼容老版本的火狐浏览器。
兼容写法:
var oAbc = document.getElementById("abc");if(oAbc.currentStyle) {//IE、Opera//alert("我支持currentStyle");alert(oAbc.currentStyle.width);} else {//FF、chrome、safari//alert("我不支持currentStyle");alert(getComputedStyle(oAbc,false).width);}
一个空白页面中body的id=”abc”,测试以上代码,IE和Opera弹出“auto”,其它三款浏览器则弹出“***px”。虽然结果不同,但是可以发现chrome和safari也都和火狐一样,顺利地读取到了属性值。不支持currentStyle的三款浏览器(FF、chrome、safari),都是支持getComputedStyle的。
结果表明:对浏览器是否支持currentStyle的判断 + getComputedStyle,就可以做到兼容各主流浏览器的效果。而且兼容写法并不复杂,你掌握了吗?^_^
支持currentStyle:IE、Opera
支持getComputedStyle:FireFox、Chrome、Safari
注意最后的弹出内容,currentStyle返回浏览器的默认值”auto”,而getComputedStyle则返回具体的值”**px”。这应该是两者的一个小差异,有兴趣的童鞋可以一起交流研究下。
此时页面显示字的颜色是runtimeStyle赋值后的black。但是只有currentStyle.color和runtimeStyle本身能够取到这个值,style.color取到的依然是tag中的blue。
- currentStyle、runtimeStyle、getComputedStyle的区别
- style,currentStyle,runtimeStyle,getComputedStyle的区别及用法
- style,currentStyle,runtimeStyle,getComputedStyle的区别及用法
- currentStyle,runtimeStyle,getComputedStyle style
- currentStyle和getComputedStyle的区别
- Style currentStyle computedStyle 和 runtimeStyle 的区别
- style,currentStyle,getComputedStyle的区别和用法
- getComputedStyle、currentStyle的区别与用法
- JS中style、currentStyle、getComputedStyle的区别
- JS中style、currentStyle、getComputedStyle的区别
- style currentStyle getComputedStyle的区别和用法
- js中getComputedStyle 和currentStyle 的区别
- style、 currentStyle、 runtimeStyle区别分析
- currentStyle、getComputedStyle区别
- js中style、currentStyle、getComputed、runtimeStyle的区别
- style、currentStyle、getComputedStyle区别介绍
- style、currentStyle、getComputedStyle区别介绍
- style、currentStyle、getComputedStyle区别介绍
- 金色十月线上编程比赛第二题:解密
- NGUI系列教程五(角色信息跟随)
- hdu 4442 Physical Examination(贪心)
- 对于同学提问问题答案的收集
- Unity3d NGUI系列教程四(自定义Atlas,Font)
- currentStyle、runtimeStyle、getComputedStyle的区别
- Unity项目-了解协同StartCoroutine(2)
- Unity3D NGUI系列教程三
- 通过数据库修改快捷方式图标
- Android CountDownTimer倒计时简单使用
- Unity3D NGUI系列教程二
- Java 1024
- Unity3D NGUI系列教程一
- xcode6发布app的折腾