js获取元素的页面坐标

一、DOM中各种宽度、高度

二、DOM中的坐标系

JS获取div元素的宽度

offsetWidth=width+padding-left+padding-right+border-left+border-right,
即offsetWidth描述的是元素的宽度,是指元素的宽度+内边距(左右两个)+边框(左右两个),不包括外边距和滚动条部分

offsetHeight=height+padding-top+padding-bottom+border-top+border-bottom,
即offsetHeight描述的是元素的高度,是指元素的高度+内边距(上下两个)+边框(上下两个),不包括外边距和滚动条部分

offsetTop=margin-top+padding-top(parent的)
即offsetTop描述的是元素和父容器的上边距离,是指元素的外边距(上边一个)+已定位的父容器(offsetParent)的内边距(上边一个)(不包括元素的边框和父容器的边框)

offsetLeft=margin-left+padding-left(parent的)
即offsetLeft描述的是元素和父容器的左边距离,是指元素的外边距(左边一个)+已定位的父容器(offsetParent)的内边距(左边一个)(不包括元素的边框和父容器的边框)

clientWidth=width+padding-left+padding-right
即clientWidth描述的是元素的宽度,是指元素的宽度+内边距(左右两个),不包括外边距、滚动条部分、边框

clientHeight=height+padding-top+padding-bottom
即clientHeight描述的是元素的高度,是指元素的高度+内边距(上下两个),不包括外边距、滚动条部分、边框

clientTop=border-top
即clientTop是指当前元素的上边框

clientLeft=border-left
即clientLeft是指当前元素的左边框

scrollWidth=width+padding-left+padding-right
即元素的滚动条宽度,是指宽度+内边距(左右两个),值等价于“clientWidth”的值

scrollHeight=height+padding-top+padding-bottom
即元素的滚动条高度,是指高度+内边距(上下两个),值等价于“clientHeight”的值

scrollTop元素的滚动条的垂直位置

scrollLeft元素的滚动条的水平位置

注:
http://www.cnblogs.com/kongxianghai/p/4192032.html
情况1:
元素内无内容或者内容不超过可视区,滚动不出现或不可用的情况下。

scrollWidth=clientWidth,两者皆为内容可视区的宽度。

offsetWidth为元素的实际宽度。

情况2:

元素的内容超过可视区,滚动条出现和可用的情况下。

scrollWidth>clientWidth。

scrollWidth为实际内容的宽度。

clientWidth是内容可视区的宽度。

offsetWidth是元素的实际宽度。

滚动条属性:
  overflow:auto为自动,yes为有,no为无
  overflow-x:横向滚动条
  overflow-y:纵向滚动条

如果该div被包含在其他对象例如td中,则位置可设为相对:position:relative

特别是元素内容超过可视区,这里的滚动条宽度有点不太清楚

示例:

 1 <div id="divParent" style="position:relative; background:#36F; padding:5px; border:2px solid #FF0; width:300px; overflow:auto;">
 2     <div id="divChild" style="width:400px; height:100px; border:1px solid #fff; background:#69F; margin:20px; padding:10px;
 3     "></div>
 4 </div>
 5
 6 <script type="text/javascript">
 7     var div = document.getElementById("divChild");
 8     var childWidth = div.offsetWidth;
 9     var childHeight = div.offsetHeight;
10     var childTop = div.offsetTop;
11     var childLeft = div.offsetLeft;
12
13     div.innerHTML += "childWidth:" + childWidth + "<br />";
14     div.innerHTML += "childHeight:" + childHeight + "<br />";
15     div.innerHTML += "childTop:" + childTop + "<br />";
16     div.innerHTML += "childLeft:" + childLeft + "<br />";
17
18
19     var childParent = div.offsetParent;
20     div.innerHTML += "childParent:" + childParent.id + "<br />";
21
22
23     var clientWidth = div.clientWidth;
24     var clientHeight = div.clientHeight;
25     var clientTop = div.clientTop;
26     var clientLeft = div.clientLeft;
27
28     div.innerHTML += "clientwidth:" + clientWidth + "<br />";
29     div.innerHTML += "clientHeight:" + clientHeight + "<br />";
30     div.innerHTML += "clientTop:" + clientTop + "<br />";
31     div.innerHTML += "clientLeft:" + clientLeft + "<br />";
32
33
34     //div.innerHTML = "";
35     var divParent = document.getElementById("divParent");
36     var scrollWidth = divParent.scrollWidth;
37     var scrollHeight = divParent.scrollHeight;
38     var scrollTop = divParent.scrollTop;
39     var scrollLeft = divParent.scrollLeft;
40     div.innerHTML+= "scrollWidth:" + scrollWidth + "<br />";
41     div.innerHTML+= "scrollHeigth:" + scrollHeight + "<br />";
42     div.innerHTML+= "scrollTop:" + scrollTop + "<br />";
43     div.innerHTML+= "scrollLeft:" + scrollLeft + "<br />";
44 </script>
时间: 2024-10-03 14:44:59

js获取元素的页面坐标的相关文章

js 获取元素在页面上的偏移量的最佳方式

使用js制作效果时,我们常常要获取某个元素在页面上的偏移量(例如tip提示框功能).而获取偏移量可以直接获取相对于document的偏移量,也可以获取相对与视口的偏移量(viewpoint)加上页面滚动量(scroll)获得. 1.获取相对与document的偏移量 function getOffsetSum(ele){ var top= 0,left=0; while(ele){ top+=ele.offsetTop; left+=ele.offsetLeft; ele=ele.offsetP

js 获取元素坐标 和鼠标点击坐标

js 获取元素的位置 var odiv=document.getElementById('divid'); alert(odiv.getBoundingClientRect().left); alert(odiv.getBoundingClientRect().top); js 获取点击时间鼠标坐标 event = event||window.event; //获得相对于body定位的横标值: x=event.clientX //获得相对于body定位的纵标值: y=event.clientY

各种情况上JS获取元素宽高

各种情况下JS获取元素宽高 为了叙述简单,这里仅拿width示例. 情景一,元素style属性设置了width/height <div style="width:996px">test<div><script> var div = document.getElementsByTagName('div')[0]; alert(div.style.width);</script>默认分类 如上,使用el.style.width即可. 如果没有

js获取元素宽高

只说ie8+的浏览器的方法. 在转vue之前,一直使用jquery来获取元素的高度,最近转vue,发现了一个问题.使用vue的时候,部分操作需要在mounted这个生命周期里面去做,官网对mounted的解释是: 如果不在vm.$nextTick里面做操作的时候,是很有可能获取不到组件内部元素的宽高的.刚开始的时候,我没有仔细看官网,所以在mounted里面是直接获取不到子孙元素的宽高的. 后来,看了iview的一个组件的源码,看到了getComputedStyle方法获取宽高,对getComp

关于js获取元素在屏幕中的位置的方法

针对我们获取元素在页面中的位置的问题,我们还是用老师一峰老师的方法来解决吧 下面上HTML代码 <div class="left_footer"> <p data-num="1" ref="data" @mouseenter="mOver($event)" @mouseleave="mOut($event)">上</p> <p data-num="2&qu

获取元素在页面中left,top值(忽略其父级的定位)

函数用到的属性有: element.offsetLeft 返回当前元素的相对水平偏移位置的偏移容器 element.offsetParent 返回元素的偏移容器 element.offsetTop 返回当前元素的相对垂直偏移位置的偏移容器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</ti

js获取元素样式方法

? 1 2 3 4 5 6 7 8 function getStyle(ojb,attr){       if(obj.currentStyle){             return obj.currentStyle[attr];       }         else{            return getComputedStyle(obj,false)[attr];        } } js获取元素样式方法,布布扣,bubuko.com

js获取元素样式包括非行内样式

var obj=document.getElementById("id"): 由于js新版本的发放,越来越多的人喜欢用原生js而非jquery对dom元素进行操作,那么如果通过js获取dom元素的样式呢,很多人都知道用obj.style这种方式,但是,这种方式只能获取dom行内样式,一旦,我们定义class,然后再css文件里写时就会获取不到,下面我主要介绍获取行内样式和获取非行内样式两种获取方法. 1,获取行内样式. <div style="width:200&quo

原生js获取元素样式值

在学习js初期,就一直有一个疑问,获取元素样式的值,不是直接使用obj.style.left之类的就可以得到了吗?可是使用这样的方式,有的时候能够获取得到,有的时候又不能获取,一直疑惑不已,但是由于以前学习态度的问题,也没有深究,今天专门花了点时间整理了一下这方面的知识. 样式 首先,我们要明确样式的种类有以下三种 内联样式: 也就是行内样式,直接写在DOM元素的style属性中 嵌入样式: 写在html页面中的<style></style>中的样式 外部样式: 由link标签引入