js获取控件位置以及不同浏览器中的差别介绍


Posted in Javascript onAugust 08, 2013
//获取坐标位置 
function getpos(e) { 
var t=e.offsetTop; 
var l=e.offsetLeft; 
var height=e.offsetHeight; 
while(e=e.offsetParent) { 
t+=e.offsetTop; 
l+=e.offsetLeft; 
} 
}

假设 obj 为某个 HTML 控件。
obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。
obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素。
obj.offsetWidth 指 obj 控件自身的宽度,整型,单位像素。
obj.offsetHeight 指 obj 控件自身的高度,整型,单位像素。

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

例如:

<div id="tool"> 
<input type="button" value="提交"> 
<input type="button" value="重置"> 
</div>

“提交”按钮的 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 也是同样道理。

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 
offsetWidth = width 
offsetHeight = height

(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)
Javascript 相关文章推荐
Jquery时间验证和转换工具小例子
Jul 01 Javascript
jQuery读取和设定KindEditor值的方法
Nov 22 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
详解JavaScript中的forEach()方法的使用
Jun 08 Javascript
jQuery实现为控件添加水印文字效果(附源码)
Dec 02 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
浅谈React组件之性能优化
Mar 02 Javascript
Node.js API详解之 zlib模块用法分析
May 19 Javascript
实现一个Vue自定义指令懒加载的方法示例
Jun 04 Javascript
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
Canvas跟随鼠标炫彩小球的实现
Apr 11 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
Aug 08 #Javascript
Jquery chosen动态设置值实例介绍
Aug 08 #Javascript
extjs两个tbar问题探讨
Aug 08 #Javascript
JS实现随机数生成算法示例代码
Aug 08 #Javascript
判断是否安装flash player及当前版本的JS代码
Aug 08 #Javascript
js 为label标签和div标签赋值的方法
Aug 08 #Javascript
JS模拟自动点击的简单实例
Aug 08 #Javascript
You might like
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
php实现zip文件解压操作
2015/11/03 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
python异常触发及自定义异常类解析
2019/08/06 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
python Selenium 库的使用技巧
2020/10/16 Python
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
触摸春天教学反思
2014/02/03 职场文书
小学生秋游活动方案
2014/02/23 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
交通工程专业推荐信
2014/09/06 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2015年党建工作总结
2015/03/30 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python