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版TAB选项卡效果实例
Aug 16 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
js实现浏览本地文件并显示扩展名的方法
Aug 17 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
Oct 23 Javascript
jquery彩色投票进度条简单实例演示
Jul 23 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
Jan 18 Javascript
一个可复用的vue分页组件
May 15 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
Jul 13 Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
Jan 10 Javascript
使用electron制作满屏心特效的示例代码
Nov 27 Javascript
Three.js实现3D机房效果
Dec 30 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
jQuery中Ajax的load方法详解
2015/01/14 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python configparser模块应用过程解析
2020/08/14 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
python-地图可视化组件folium的操作
2020/12/14 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
佳能英国官方网站:Canon UK
2017/08/08 全球购物
会计的岗位职责
2014/03/15 职场文书
奥利奥广告词
2014/03/20 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
小学生思想品德评语
2014/12/31 职场文书
财政局长个人总结
2015/03/04 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
养成教育主题班会
2015/08/13 职场文书
员工试用期工作总结
2019/06/20 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技