天天看點

document.documentElement 和document.body 以及clientWidth

今天有用到這塊的東西  在這裡分享給小夥伴們

(原來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對象了。 

是以在程式設計的時候,請加上這樣的判斷 

document.documentElement 和document.body 以及clientWidth
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; 
}