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 相关文章推荐
找出字符串中出现次数最多的字母和出现次数精简版
Nov 07 Javascript
Javascript加载速度慢的解决方案
Mar 11 Javascript
Javascript数组Array基础介绍
Mar 13 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
javascript中的后退和刷新实现方法
Nov 10 Javascript
Angular使用$http.jsonp发送跨站请求的方法
Mar 16 Javascript
使用OPENLAYERS3实现点选的方法
Sep 24 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
Sep 21 Javascript
使用javaScript实现鼠标拖拽事件
Apr 03 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
Jul 23 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
Vue移动端项目实现使用手机预览调试操作
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
服务器端解压缩zip的脚本
2006/12/22 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
三级下拉菜单的js实现代码
2011/05/23 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
详解flask入门模板引擎
2018/07/18 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
python binascii 进制转换实例
2019/06/12 Python
Django REST framework 分页的实现代码
2019/06/19 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
python动态规划算法实例详解
2020/11/22 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
小学生新学期寄语
2014/01/19 职场文书
四年级语文教学反思
2016/03/03 职场文书
详解Python中下划线的5种含义
2021/07/15 Python
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript