##js获取样式
- 在前几个小节我们留下了一个如何获取opacity属性问题。
- 如果在前几个小节加上border属性你将会发现一个bug,因为offsetLeft包括元素宽度、可见垂直滚动条宽度、左边框和右边框宽度。当有边框时offsetLeft并不是我们想要的值。
如何获取样式?
- 在Firefox、Opera、Safari等浏览器中获取样式的方式
我们使用getComputedStyle()这个函数获取样式值,函数第一个参数是元素对象,若是想获取伪类元素则应当在第二个参数上填上hover,active,link等属性,否则填null。 - 在IE中获取样式的方式
在IE中每个具有style属性的元素都有一个currentStyle属性。可以通过该属性获取元素
注意:
- 这两种方式都不可以返回类似border(含综合属性)的样式
- 不同浏览器表示值的方式可能不同,如在Firefox和Safari中返回颜色值是RGB格式的
- 以上方式均只能读取样式
获取样式函数
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}
else{
return getComputedStyle(obj,false)[attr];
}
}
用getStyle函数获取container的width值