HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth之完全詳解

HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth之完全詳解(轉載)

  • 作者: 來源: http://bbs.chinaunix.net
  • 核心提示:HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距離之完全詳解 scrollHeight: 獲取對象的滾動高度。 scrollLeft:設置或獲取位於對象左邊界和窗口中目前可見內容的最左端之間的距離 scrollTop:設置或獲取位於對象最頂端和窗口中可見內容的最頂端.....

HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距離之完全詳解

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 相對文檔的水平座標+垂直方向滾動的量

  以上主要指IE之中,FireFox差異如下:
IE6.0、FF1.06+:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
IE5.0/5.5:
clientWidth = width - border
clientHeight = height - border
offsetWidth = width
offsetHeight = height
(需要提一下:CSS中的margin屬性,與clientWidth、offsetWidth、clientHeight、offsetHeight均無關)
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]" lang="gb2312">
<head>
<head>
<title> 代碼實例:關於clientWidth、offsetWidth、clientHeight、offsetHeight的測試比較 </title>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<meta name="author" content="楓巖,[email protected]">
<meta name="copyright" content="[url=http://www.cnlei.com]http://www.cnlei.com[/url]" />
<meta name="description" content="關於clientWidth、offsetWidth、clientHeight、offsetHeight的測試比較" />
<style type="text/css" media="all">
body 
{font-size:14px;}
a,a:visited 
{color:#00f;}
#Div_CnLei 
{
width
:300px;
height
:200px;
padding
:10px;
border
:10px solid #ccc;
background
:#eee;
font-size
:12px;
}
#Div_CnLei p 
{margin:0;padding:10px;background:#fff;}
</style>
<script type="text/javascript">
function Obj(s){
return document.getElementById(s)?document.getElementById(s):s;
}
function GetClientWidth(o){
return Obj(o).clientWidth;
}
function GetClientHeight(o){
return Obj(o).clientHeight;
}
function GetOffsetWidth(o){
return Obj(o).offsetWidth;
}
function GetOffsetHeight(o){
return Obj(o).offsetHeight;
}
</script>
</head>
<body>
<p>點擊下面的鏈接:</p>
<div id="Div_CnLei">
<p><href=http://bbs.chinaunix.net/"javascript:alert(GetClientWidth('Div_CnLei'));">GetClientWidth();</a>    <href=http://bbs.chinaunix.net/"javascript:alert(GetClientHeight('Div_CnLei'));">GetClientHeight();</a></p>
<p><href=http://bbs.chinaunix.net/"javascript:alert(GetOffsetWidth('Div_CnLei'));">GetOffsetWidth();</a>    <href=http://bbs.chinaunix.net/"javascript:alert(GetOffsetHeight('Div_CnLei'));">GetOffsetHeight();</a></p>
</div>
<div id="Description">
<p><strong>IE6.0、FF1.06+:</strong><br />
clientWidth = width + padding = 300+10×2 = 320
<br />
clientHeight = height + padding = 200+10×2 = 220
<br />
offsetWidth = width + padding + border = 300+10×2+10×2= 340
<br />
offsetHeight = height + padding + border = 200+10×2+10×2 = 240
</p>
<p><strong>IE5.0/5.5:</strong><br />
clientWidth = width - border = 300-10×2 = 280
<br />
clientHeight = height - border = 200-10×2 = 180
<br />
offsetWidth = width = 300
<br />
offsetHeight = height = 200
</p>
</div>
</body>
</html>
 
 
Javascript:scrollWidth,clientWidth,offsetWidth的區別(轉)

clientWidth
是對象可見的寬度,不包滾動條等邊線,會隨窗口的顯示大小改變。

scrollWidth
是對象的實際內容的寬,不包邊線寬度,會隨對象中內容的多少改變(內容多了可能會改變對象的實際寬度)  

offsetWidth
是對象的可見寬度,包滾動條等邊線,會隨窗口的顯示大小改變。


------------------------------------------------
一個scrollWidth和clientWidth的例子:
<html>
<head>
<title>77.htm文件</title>
</head>

<body>
<textarea wrap="off" onfocus="alert('scrollWidth:'+this.scrollWidth+'/n clientWidth:'+this.clientWidth);"></textarea>
</body>
</html>
在文本框內輸入內容,當橫向滾動條沒出來前scrollWidth和clientWidth的值是一樣的。
當一行內容超出文本框的寬度,就有橫向滾動條出來了,scrollWidth的值就變了。
scrollWidth是對象實際內容的寬度。
clientWidth是對象看到的寬度(不含邊線),這個例子裏不會改變。


-----------------------------------------------
一個clientWidth和offsetWidth的例子:
<html>
<head>
<title>77.htm文件</title>
</head>

<body>
<textarea wrap="off" onfocus="alert('offsetWidth:'+this.offsetWidth+'/n clientWidth:'+this.clientWidth);"></textarea>
</body>
</html>

offsetWidth的值總是比clientWidth的值打
clientWidth是對象看到的寬度(不含邊線)
offsetWidth是對象看到的寬度(含邊線,如滾動條的佔用的寬)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章