首页 > 代码库 > js中style,currentStyle和getComputedStyle的区别

js中style,currentStyle和getComputedStyle的区别

js中style,currentStyle和getComputedStyle的区别 MarysMa 在js中用xx.style.marginTop是无法获取写在css或<sytle>标签中的margin-top之类的样式值(包括width,height等)。

这就是style属性的限制:

 

style

:只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的。(内联样式: body中标签里用style直接写的样式。)

currentStyle

:可以弥补style的不足,但是只适用于IE。

getComputedStyle

:同currentStyle作用相同,但是适用于FF、opera、safari、chrome。
 
所以兼容的取值写法:
getElementStyle: function(el,attr){
//获取el当前的attr样式,解决ie问题
return el.currentStyle?el.currentStyle[attr]:getComputedStyle(el,null)[attr];
}
 

注意:

 

currentStyle和getComputedStyle只能用于获取页面元素的样式,不能用来设置相关值。

 

如果要设置相应值,应使用style。

 
 
 

科普:

 
getComputedStyle:是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([object CSSStyleDeclaration]),只读。(总而言之就是获取一堆样式。。。)
 
语法如下:var style = window.getComputedStyle("元素", "伪类");
 
顺带一提jq库的$.css()就是用getComputedStyle和getPropertyValue两者结合。
详细可以看文章:

获取元素CSS值之getComputedStyle方法熟悉 ? 张鑫旭

js中style,currentStyle和getComputedStyle的区别