offset 指偏移,包括这个元素在文档中占用的所有显示宽度,包括滚动条、padding、border,不包括overflow隐藏的部分
1.1 offsetLeft属性和offsetTop属性
这两个属性的兼容性非常差.
window.onload=function(){
var inner=document.getElementById("inner");
inner.innerHTML=inner.offsetLeft;
}
特别说明:此属性是只读的,不能够赋值。
<body>
<div id="main">
<div id="box">
<div id="inner"></div>
</div>
</div>
</body>
上面的代码可以返回inner元素距离main元素的左侧的距离,因为main元素是第一个定位父辈元素。
offsetLeft & offsetTop 盒子与上级盒子的距离
注意,一定不能使用obj.style.left来计算距离
①obj.style.left,只能读写行内样式
offsetLeft能读取任何地方设置的样式
②obj.style.left是个字符串,带有“px”后缀
offsetLeft是数值类型,能直接做算数运算
③offsetLeft是只读的,obj.style.left是可读可写的
④offsetLeft读取的是距离上一级声明了定位方式的盒子的距离,如果没有任何1级父盒子声明了定位方式
那么offsetLeft读取的就是距离body的距离。如果多个父级盒子都声明了定位方式,那么以最近的那个盒子为准
⑤offsetLeft读取到的是边框到边框的距离(含有padding)
注意:只有offsetLeft和offsetTop,没有offsetRight和offsetBottom
js中的offsetLeft属性具体有什么作用?
可以判断一个物体的跟document的左边距离,也就是浏览器左边缘。比如你写一个div 获取这个div之后alert(你的div.offsetLeft)就可以看到他现在距离浏览器左边的距离。当然你也可以用他给对象赋值,offset不单单只有Left 还有offsetTop offsetWidth offsetHeight 都是JS里很有用的属性。
1.2 offsetWidth和offsetHeight
全线兼容,是自己的属性,和别的盒子无关。
一个盒子的offsetWidth值就是自己的 width+左右padding+左右border的宽度,
1.3 clientWidth和clientHeight
全线兼容。
clientWidth就是自己的width+padding的值。 也就是说,比offsetWidth少了border。