2009年11月10日星期二

offsetTop、offsetLeft、offsetWidth、offsetHeight、style中的样式

假设 obj 为某个 HTML 控件

  • obj.offsetTop 指 obj 距离上方或上层控件的位置, 整型, 单位 px.

  • obj.offsetLeft 指 obj 距离左方或上层控件的位置, 整型, 单位 px.

  • obj.offsetWidth 指 obj 控件自身的宽度, 整型, 单位 px.

  • obj.offsetHeight 指 obj 控件自身的高度, 整型, 单位 px.



我们对前面提到的 "上方或上层" 与 "左方或上层" 控件作个说明.

例如:
[html]
<div id="tool">
<input type="button" value="提交">
<input type="button" value="重置">
</div>
[/html]

提交 按钮的 offsetTop提交 按钮距 tool 层上边框的距离, 因为距其上边最近的是 tool 层的上边框.
重置 按钮的 offsetTop重置 按钮距 tool 层上边框的距离, 因为距其上边最近的是 tool 层的上边框.

提交 按钮的 offsetLeft提交 按钮距 tool 层左边框的距离, 因为距其左边最近的是 tool 层的左边框.
重置 按钮的 offsetLeft重置 按钮距 提交 按钮右边框的距离, 因为距其左边最近的是 提交 按钮的右边框.


offsetTop 可以获得 HTML 元素距离上方或外层元素的位置, style.top 也是可以的, 二者的区别是:

  • offsetTop 返回的是数字, 而 style.top 返回的是字符串, 除了数字外还带有单位 px.

  • offsetTop 只读, 而 style.top 可读写.

  • 如果没有给 HTML 元素指定过 top 样式, 则 style.top 返回的是空字符串.



offsetLeft 与 style.left, offsetWidth 与 style.width, offsetHeight 与 style.height 也是同样道理.
offsetTop, offsetLeft 在IE6, IE7下不会工作.

  • scrollHeight 获取对象的滚动高度.

  • scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离

  • scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离

  • scrollWidth 获取对象的滚动宽度

  • offsetHeight 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度

  • offsetLeft 获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置

  • offsetTop 获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置

  • event.clientX 相对文档的水平座标

  • event.clientY 相对文档的垂直座标

  • event.offsetX 相对容器的水平坐标

  • event.offsetY 相对容器的垂直坐标

  • document.documentElement.scrollTop 垂直方向滚动的值

  • event.clientX+document.documentElement.scrollTop 相对文档的 水平座标+垂直方向滚动的量



以上主要指IE之中, FireFox差异如下:
IE6.0, FF1.06+

  • clientWidth = width + padding

  • clientHeight = height + padding

  • offsetWidth = width + padding + border

  • offsetHeight = height + padding + border


IE5.0/5.5

  • clientWidth = width - border

  • clientHeight = height - border

  • offfsetWidth = width

  • offsetHeight = height


另外, CSS中的 margin 属性, 与clientWidth, offsetWidth, clientHeight, offsetHeight均无关

对于所有的属性, 这里有详细的说明并有实例.

没有评论:

发表评论