本文测试的是offsetHeight,获取网页中某元素的高度,单位是像素,获取的类型是整型,可以进行数字运算。
如图,网页中的元素本身的高度包括,自身的内容+padding+border,而margin是元素对外面的距离,所以不属于元素本身的高度。
如图,设置一个div,取名叫D1,D1的上下左右padding各50px,上下左右margin各11px;上下左右border各10px;
最后的结果是:
offsetTop:11px,也就是margin的top值。进入浏览器的开发者模式,个人用的是qq浏览器极速模式,发现div在设置的顶边距包括了body的margin。
offsetLeft:19px,该div的左边margin设置的是11px,进入浏览器的开发者模式,可以看到body也有margin,是8px,所以该div距离浏览器左边的距离是body的margin+div自身的margin=8px+11px=19px。
offsetWidth:因为div本身不设宽度,所以是宽度自适应,随着浏览器窗口的大小而改变。内容宽度1150px+上下padding50px+50px+上下border10px+10px=1270px。
offsetHeight:div本身的上下border+上下pddding+div里内容本身的高度,由于本身没给div设置高度样式,所以高度和内容有关,目前里面是一句话,内容高度为42px。
10px+10px(上下border)+50px+50px(上下paddding)+42px(内容本身高度)=162px。
在IE中也测试了下,不同的是height,因为不同浏览器的默认字体默认字体大小等不同等,导致内容高度不同,因此offsetHeight也不同。
也就是offsetTop,offsetLeft是元素距离浏览器的边距,和元素本身的margin和外面的其他的margin有关。
offsetWidth、offsetHeight是元素本身的border、padding、内容的合计值,也就是整个元素本身的宽高。
测试代码:
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>WEB打印控件LODOP</title> <script language="javascript" src="LodopFuncs.js"></script> <style>#D1{background-color:#bbf1f2;padding:50px;margin:11px;border:10px solid blue;}</style> </head> <body> <div id="D1">官网样例是混合部署<br>LodopFuncs.js里已经写好了判断</div> <a href="javascript:prn1_preview()">点击获取</a><br> <script language="javascript" type="text/javascript"> var LODOP; //声明为全局变量 function prn1_preview(){ var D1=document.getElementById("D1"); console.log("D1的上下左右padding各50px,上下左右margin各11px;上下左右border各10px;"); console.log("D1的上下左右:top:"+D1.offsetTop+",left:"+D1.offsetLeft+","+D1.offsetWidth+",height:"+D1.offsetHeight); }; </script> </body>
图示: