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 相关文章推荐
JavaScipt基本教程之前言
Jan 16 Javascript
Firefox outerHTML实现代码
Jun 04 Javascript
关于jquery append() html时的小问题的解决方法
Dec 16 Javascript
jquery 操作日期、星期、元素的追加的实现代码
Feb 07 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
Jan 21 Javascript
Bootstarp 基础教程之表单部分实例代码
Feb 03 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
JavaScript使用localStorage存储数据
Sep 25 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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
linux 后台运行node服务指令方法
2018/05/23 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python实现微信自动回复机器人功能
2019/07/11 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
python3 求约数的实例
2019/12/05 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
python实现逻辑回归的示例
2020/10/09 Python
保险专业大学生职业规划书
2014/03/03 职场文书
车间质检员岗位职责
2015/04/08 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle