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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM