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 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
使Ext的Template可以解析二层的json数据的方法
Dec 22 Javascript
javascript GUID生成器实现代码
Oct 31 Javascript
可以用来调试JavaScript错误的解决方案
Aug 07 Javascript
web基于浏览器的本地存储方法应用
Nov 27 Javascript
JS 添加千分位与去掉千分位的示例
Jul 11 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
Aug 12 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
详解Angular 4.x 动态创建组件
Apr 25 Javascript
node.js命令行教程图文详解
May 27 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
PHP发送短信代码分享
2015/08/11 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
详解JavaScript中操作符和表达式
2018/09/12 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python代码调试的几种方法总结
2015/04/15 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
通过代码实例了解Python sys模块
2020/09/14 Python
Python图像读写方法对比
2020/11/16 Python
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
关于毕业的广播稿
2014/01/10 职场文书
Django如何与Ajax交互
2021/04/29 Python
MySQL 如何限制一张表的记录数
2021/09/14 MySQL