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 相关文章推荐
JavaScript在多浏览器下for循环的使用方法
Nov 07 Javascript
javascript全局变量封装模块实现代码
Nov 28 Javascript
JQuery 图片的展开和伸缩实例讲解
Apr 18 Javascript
js渐变显示渐变消失示例代码
Aug 01 Javascript
纯js写的分页表格数据为json串
Feb 18 Javascript
javascript定时器完整实例
Feb 10 Javascript
javascript实现十秒钟后注册按钮可点击的方法
May 13 Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 Javascript
举例简介AngularJS的内部语言环境
Jun 17 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
深入理解 ES6中的 Reflect用法
Jul 18 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
Terran建筑一览
2020/03/14 星际争霸
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
取键盘键位ASCII码的网页
2007/07/30 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
js实现分割上传大文件
2016/03/09 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
Ruby如何定义一个类
2012/10/08 面试题
上班迟到检讨书范文
2015/05/06 职场文书