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 相关文章推荐
js 使用form表单select类实现级联菜单效果
Dec 19 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
BootStrop前端框架入门教程详解
Dec 25 Javascript
Angular实现的简单查询天气预报功能示例
Dec 27 Javascript
从零开始搭建webpack+react开发环境的详细步骤
May 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
PHP默认安装产生系统漏洞
2006/10/09 PHP
php的header和asp中的redirect比较
2006/10/09 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
RC4文件加密的python实现方法
2015/06/30 Python
python中的错误处理
2016/04/10 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
python发送告警邮件脚本
2018/09/17 Python
Python最小二乘法矩阵
2019/01/02 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
同学会邀请书大全
2014/01/12 职场文书
培训研修方案
2014/06/06 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
初中语文教学随笔
2015/08/15 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL