js中document.documentElement 和document.body 以及其屬性


(原來HTML里是document.body  --XHTML里是document.documentElement ,都指的是<body>節點(OR元素)

 
在設計頁面時可能經常會用到固定層的位置,這就需要獲取一些html對象的坐標以更靈活的設置目標層的坐標,這里可能就會用到 document .body.scrollTop等屬性,但是此屬性在xhtml標准網頁或者更簡單的說是帶<!DOCTYPE ..>標簽的頁面里得到的結果是0,如果不要此標簽則一切正常,那么在xhtml頁面怎么獲得body的坐標呢,當然有辦法-使用 document .documentElement來取代 document .body,可以這樣寫
例:
var top = document .documentElement.scrollTop || document .body.scrollTop;
在javascript里||是個好東西,除了能用在if等條件判斷里,還能用在變量賦值上。那么上例等同於下例。
例:
var top = document .documentElement.scrollTop ? document .documentElement.scrollTop : document .body.scrollTop;
這么寫可以得到很好的兼容性。

相反,如果不做聲明的話, document .documentElement.scrollTop反而會顯示為0。


得到各個屬性如下:

網頁可見區域寬: document .body.clientWidth;
網頁可見區域高: document .body.clientHeight;
網頁可見區域寬: document .body.offsetWidth   (包括邊線的寬);
網頁可見區域高: document .body.offsetHeight (包括邊線的寬);
網頁正文全文寬: document .body.scrollWidth;
網頁正文全文高: document .body.scrollHeight;
網頁被卷去的高: document .body.scrollTop;
網頁被卷去的左: document .body.scrollLeft;
網頁正文部分上: window.screenTop;
網頁正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的寬: window.screen.width;
屏幕可用工作區高度: window.screen.availHeight;
屏幕可用工作區寬度:window.screen.availWidth;


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 相對文檔的水平座標+垂直方向滾動的量
Post by molong on 2009-05-19 11:57 PM #1

要獲取當前頁面的滾動條縱坐標位置,用:
document .documentElement.scrollTop;
而不是:
document .body.scrollTop;
documentElement 對應的是 html 標簽,而 body 對應的是 body 標簽。

在標准w3c下, document .body.scrollTop恆為0,需要用 document .documentElement.scrollTop來代替;
如果你想定位鼠標相對於頁面的絕對位置時,你會發現google里面1000篇文章里面有999.99篇會讓你使用event.clientX+ document .body.scrollLeft,event.clientY+ document .body.scrollTop,如果你發現你的鼠標定位偏離了你的想象,請不要奇怪,這是再正常不過的事情。
ie5.5之后已經不支持 document .body.scrollX對象了。
所以在編程的時候,請加上這樣的判斷
if (document.body && document.body.scrollTop && document.body.scrollLeft) 
{ 
   top=document .body.scrollTop; 
   left=document .body.scrollleft;     
} 
if (document.documentElement && document.documentElement.scrollTop && document.documentElement.scrollLeft) 
{ 
   top=document.documentElement.scrollTop; 
   left=document.documentElement.scrollLeft; 
}


免責聲明!

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



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