http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html

http://www.cnblogs.com/bobodeboke/p/6935086.html

一、获取元素的大小和位置

方法一、利用offsetXXX属性

1)offsetHeight:元素垂直方向占用空间,包括内边距,上下边框。

2)offsetWidth:元素水平方向占用空间,包括内边距,左右边框。

3)offsetLeft:元素的左外边框至包含元素(offsetParent引用中)的左内边框之间的像素距离。

4)offsetTop:元素的上外边框至包含元素(offsetParent引用中)的上内边框之间的像素距离。

根据offsetLeft和offsetTop,向上回溯到根元素,可以得到元素在页面的偏移量:

//获取元素在页面的左偏移
function getElementLeft(element){
var acturalLeft=element.offsetLeft;
var current=element.offsetParent;
while(current!=null){
acturalLeft+=current.offsetLeft;
current=current.offsetParent;
}
return acturalLeft;
}
//获取元素在页面的上偏移
function getElementTop(element){
var acturalTop=element.offsetTop;
var current=element.offsetParent;
while(current!=null){
acturalTop+=current.offsetTop;
current=current.offsetParent;
}
return acturalTop; }

二、获取元素的客户区大小clientWidth,以及clientHeight;

元素客户区大小是指元素内容及其内边距所占据的空间大小,从字面上看,客户区大小就是元素内部空间的大小,因此不包含边框和滚动条。

clientWidth是元素内容区域宽度加上左右内边距宽度

clientHeight是元素内容区域高度加上上下内边距的宽度

常见的用法是获取浏览器窗口的大小:

var width=document.documentElement.clientWidth||document.body.clientWidth;
var height=document.documentElement.clientHeight||document.body.clientHeight;

方法二、利用getBoundingClientRect()方法

该方法返回一个矩形对象,包含left,top,right和bottom四个属性。这些属性给出了元素相对于视口的位置。

其中right和left的差值和offsetWidth的值相等,bottom和top差值和offsetHeight的值相等。left和top属性大致等于前面得getElementTop和getElementLeft

(IE认为文档左上角是(2,2),其他包括IE9则认为左上角为(0,0))

三、滚动元素大小和位置的确定

1)scrollHeight:如果没有滚动条,元素的总高度(即将滚动折叠部门的高度也包括进去)

2)scrollWidth:如果没有滚动挑,元素的总宽度

3)scrollLeft:被滚动条隐藏在左侧区域的像素数目。通过设置这个属性可以改变元素的滚动位置

4)scrollTop:被滚动条隐藏在上侧区域的像素数目。通过设置这个属性可以改变元素的滚动位置

四、鼠标位置的获取

1)事件对象event的clientX与clientY属性:事件发生时候,鼠标指针在视口的水平和竖直坐标

2)事件对象event的pageX与pageY属性:事件发生时候,鼠标指针在页面的水平和竖直坐标,在页面没有滚动的时候,等于clientX和clientY

3)事件对象event的screenX与screenY属性:事件发生时候,鼠标指针相对于屏幕的水平和竖直坐标

4)IE提供了事件对象event的offsetX与offsetY属性:事件发生时候,鼠标相对于目标元素边界的水平和竖直坐标

 

javascript学习之位置获取的更多相关文章

  1. javascript 学习笔记 -- js获取本地文件信息

    JavaScript是跑在浏览器中,所以对于JavaScript读取本地文件不想c++ 和 java那样easy.网上有很多关于读取本地文件的方法,许多是用ActiveXObject控件.Active ...

  2. JavaScript学习基础部分

    JavaScript学习基础 一.简介 1.JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比方说 Internet Explorer. Mozilla.Firefo ...

  3. w3school之JavaScript学习笔记

    在前端测试过程中,少不了听到开发说到JS,JS在webJavaScript 是浏览器脚本语言(简称JS),主要用来向HTML页面添加交互行为. 学习网址:http://www.w3school.com ...

  4. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  5. JavaScript学习(1)之JavaScript基础

    JavaScript学习(1)之JavaScript基础 由于工作原因,开发语言逐渐以JavaScript为主,所以,抽空学习了下JavaScript语法.等现阶段的工作稳定之后,陆续会分享下自己在学 ...

  6. JavaScript 学习(3)核心对象

    ##JavaScript 学习 3 1.核心对象 1.1 String对象 声明和生成 var myString="Hello"; var myString=new String( ...

  7. JavaScript学习——使用JS完成页面定时弹出广告

    1.获取图片的位置(document.getElementById(“”))  隐藏图片:display:none 定时操作:setInterval(“显示图片的函数”,3000); 2.步骤分析 ( ...

  8. Javascript学习笔记三——操作DOM(二)

    Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...

  9. day 46 Javascript学习

    Javascript学习   JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScri ...

随机推荐

  1. POJ 3628 Bookshelf 2(01背包)

    Bookshelf 2 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9488   Accepted: 4311 Descr ...

  2. node系列:琐碎备忘

    cmd 全局与本地路径 查看:默认 查看本地路径:npm config get cache,默认和nodejs安装目录同一目录 查看全局路径:npm config get prefix,默认c盘app ...

  3. CSS系列:长度单位&字体大小的关系em rem px

    em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸. 任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=1 ...

  4. PHP获取当前时间、时间戳的各种格式写法汇总[日期时间](转)

    今天写下PHP中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的含义,可灵活变通.1.获取当前时间方法date()很简单,这就是获取时间的方法,格式为:date($format, $ti ...

  5. 大话数据结构(十一)java程序——串

    1.串的定义 串(String):是由零个或多个字符组成的有限序列,又名为字符串. 一般记为s="a1a2a3.........an"(n>=0),其中,s是串名称,用双引号 ...

  6. Decoder with 3 Inputs and 2 3 = 8 Outputs

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION

  7. Fingerprinting

    https://wiki.mozilla.org/Fingerprinting Fingerprinting   Contents 1 Overview 2 Data 2.1 Plugins 2.2 ...

  8. oracle管理控制台不能打开,提示此网站的安全证书有问题?

    在命令行里直接键入:certutil -setreg chain\minRSAPubKeyBitLength 128 然后再用IE打开.

  9. JavaScript中的prototype

    关于prototype: 理解prototype不应把它和继承混淆.A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍.A能使用B的方法和属性.这里强调的是克隆而不是继承 ...

  10. CSS :before和:after (转)

    前几天的晚上较全面的去看了下css的一些文档和资料,大部分的样式运用都没什么大问题了,只是有些许较陌生,但是也知道他们的存在和实现的是什么样式.今天主要想在这篇学习笔记中写的也不多,主要是针对:bef ...