通过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; }