js让页面动起来 互动版

##js获取样式

  1. 在前几个小节我们留下了一个如何获取opacity属性问题。
  2. 如果在前几个小节加上border属性你将会发现一个bug,因为offsetLeft包括元素宽度可见垂直滚动条宽度左边框和右边框宽度。当有边框时offsetLeft并不是我们想要的值。

如何获取样式?

  • 在Firefox、Opera、Safari等浏览器中获取样式的方式
    我们使用getComputedStyle()这个函数获取样式值,函数第一个参数是元素对象,若是想获取伪类元素则应当在第二个参数上填上hover,active,link等属性,否则填null。
  • 在IE中获取样式的方式
    在IE中每个具有style属性的元素都有一个currentStyle属性。可以通过该属性获取元素

注意:

  1. 这两种方式都不可以返回类似border(含综合属性)的样式
  2. 不同浏览器表示值的方式可能不同,如在Firefox和Safari中返回颜色值是RGB格式的
  3. 以上方式均只能读取样式

获取样式函数

function getStyle(obj,attr){
  if(obj.currentStyle){
    return obj.currentStyle[attr];
   }
   else{
    return getComputedStyle(obj,false)[attr];
    }
}
用getStyle函数获取container的width值