获取计算后样式的方法(兼容版)

标准下获取计算后样式

 getComputedStyle(el)["attr"]
  • 本身是一个函数,返回的值是一个对象

IE下获取计算后样式

el.currentStyle["attr"]
  • 本身是元素上的一个属性
    • currentStyle 不可以获取复合样式
    • 获取backgroundImage 的 url 的时候获取到的是绝对路径

兼容版封装函数:

function getStyle(el,attr) {
	if(el.currentStyle) {
		return el.currentStyle[attr];
	}
	return getComputedStyle(el)[attr];
}
注:el(元素)   attr(属性名称)

备注:因为el.currentStyle是一个属性,IE下是有这个属性的就会返回true,而标准下是没有这个属性的那就是undefined,undefined会返回false,所以可以用来做判断;

用法

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#wrap {
	 500px;
	height: 500px;
}	
</style>
<script type="text/javascript">
function getStyle(el,attr){
	if(el.currentStyle){
		return el.currentStyle[attr];
	}
	return getComputedStyle(el)[attr];
}
window.onload = function(){
	var wrap = document.getElementById('wrap');
	wrap.onclick = function() {
		var width = parseFloat(getStyle(wrap,'width'));//获取div的宽
		console.log(getStyle(wrap,"width"));
	}

};
</script>
</head>
<body>
<div id="wrap"></div>
</body>
</html>
原文地址:https://www.cnblogs.com/Ivy-s/p/6919066.html