在JS中获取元素具体的样式值

通过JS盒子模型属性获取的结果都是盒子的组合样式值,不能直接获取某一个具体样式值,例如:我就想获取左padding…


curEle.style.xxx

获取当前元素所有写在行内样式上的样式值
特殊:只有把样式写在行内样式上,才可以通过这种办法获取到(写在其它地方的样式是获取不到的)
这种办法在真实项目中使用的特别少:因为我们不可能把所有元素的样式都写在行内上(这样要内嵌和外联式就没用了)


window.getComputedStyle / currentStyle

只要当前元素在页面中显示出来了,我们就可以获取其样式值(不管写在行内还是样式表中);
也就是获取所有经过浏览器计算过的样式(当前元素只要能在页面中展示,那么它的所有样式都是经过浏览器计算的,
包含一些你没有设置,浏览器按照默认样式渲染的样式)
window.getComputedStyle:适用于标准浏览器,但是在IE6~8中就不兼容了,
IE6~8下我们使用 curEle.currentStyle来获取需要的样式值
//=>通过getComputedStyle获取的结果是一个对象,对象中包含了所有被浏览器计算过的样式属性及属性值
// window.getComputedStyle([当前需要操作的元素],[当前元素的伪类,一般写null])
// window.getComputedStyle(box,null)['paddingLeft'] 这种方式可以在获取的对象中找到某一个具体样式属性的值
(通过.paddingLeft也可以)

//=>在IE6~8浏览器的window全局对象中,没有提供getComputedStyle这个属性方法,我们只能使用currentStyle属性获取元素的样式
// [当前元素].currentStyle  获取的结果也是一个包含当前元素所有的样式属性和值的对象
// box.currentStyle.paddingLeft


以后再想获取元素的样式,我们需要写两套,这样的话,我们可以把获取样式的操作封装成为一个公共的方法:getCss

/*
 * getCss:获取当前元数某一个样式属性值
 * @parameter
 *    curEle:当前需要操作的元素
 *    attr:当前需要获取的样式属性名
 * @return 
 *    获取的样式属性值
 */
function getCss(curEle,attr){
    var value=null;
    if('getComputedStyle' in window){
        value = window.getComputedStyle(curEle,null)[attr];
    }else{
        value = curEle.currentStyle[attr];
    }
    return value;
}