首页 > 代码库 > 【clientX,offsetX,screenX】 【scrollWidth,clientWidth,offsetWidth】的区别

【clientX,offsetX,screenX】 【scrollWidth,clientWidth,offsetWidth】的区别

一、深刻认识clientX,offsetX,screenX

概念(来源于网络):

clientX 设置或获取鼠标指针位置相对于当前窗口的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条。 
clientY 设置或获取鼠标指针位置相对于当前窗口的 y 坐标,其中客户区域不包括窗口自身的控件和滚动条。 
offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。 
offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。 
screenX 设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标。 
screenY 设置或获取鼠标指针位置相对于用户屏幕的 y 坐标。 
x 设置或获取鼠标指针位置相对于父文档的 x 像素坐标(亦即相对于当前窗口)。 
y 设置或获取鼠标指针位置相对于父文档的 y 像素坐标(亦即相对于当前窗口)。

 

实验实例(来源于网络,修改过):

[c-sharp] view plaincopy
 
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3. <BODY onclick=‘test()‘ style="margin:0 0 0 0" mce_style="margin:0 0 0 0">  
  4. <font color=green>设置或获取鼠标指针位置相对于窗口客户区域的 x,y 坐标,其中客户区域不包括窗口自身的控件和滚动条。</font>  
  5.  <br/>  
  6. clientX=<INPUT TYPE="text" NAME="x1">  
  7. clientY=<INPUT TYPE="text" NAME="x2">  
  8. <br/>  
  9. <br/>  
  10.   
  11. <font color=blue>设置或获取鼠标指针位置相对于触发事件的对象的 x,y 坐标。 </font>  
  12. <br/>  
  13. offsetX =<INPUT TYPE="text" NAME="x3">  
  14. offsetY =<INPUT TYPE="text" NAME="x4">  
  15. <br/>  
  16. <br/>  
  17. <font color=green>设置或获取获取鼠标指针位置相对于用户屏幕的 x,y 坐标 </font>  
  18. <br/>  
  19. screenX =<INPUT TYPE="text" NAME="x5">  
  20. screenY =<INPUT TYPE="text" NAME="x6">  
  21. <br/>  
  22. <br/>  
  23. <font color=blue>设置或获取鼠标指针位置相对于父文档的 x,y 像素坐标。</font>  
  24. <br/>  
  25. x=<INPUT TYPE="text" NAME="x7">  
  26. y=<INPUT TYPE="text" NAME="x8">   
  27. <br/>  
  28. <br/>  
  29. <TABLE  align="center" width=400 height=500 border=1 style="border-style:none" mce_style="border-style:none" CELLPADDING=0 CELLSPACING=0 onclick=‘test()‘>  
  30. <TR>  
  31. <TD>a</TD>  
  32. <TD>b</TD>  
  33. </TR>  
  34. <TR>  
  35. <TD>c</TD>  
  36. <TD>d</TD>  
  37. </TR>  
  38. </TABLE>  
  39. </body>  
  40. </html>  
  41. <SCRIPT LANGUAGE="JavaScript">  
  42. <!--  
  43. function test(){  
  44. document.all.x1.value=http://www.mamicode.com/event.clientX;  
  45. document.all.x2.value=http://www.mamicode.com/event.clientY;  
  46. document.all.x3.value=http://www.mamicode.com/event.offsetX;  
  47. document.all.x4.value=http://www.mamicode.com/event.offsetY;  
  48. document.all.x5.value=http://www.mamicode.com/event.screenX;  
  49. document.all.x6.value=http://www.mamicode.com/event.screenY;  
  50. document.all.x7.value=http://www.mamicode.com/event.x;  
  51. document.all.x8.value=http://www.mamicode.com/event.y;  
  52. }  
  53. //-->  
  54. </SCRIPT>  

 

实验结果分析:

    1.   clientX 和x值在实验过程中,没有发现值不一样的例子,所以我认为它们在效果上是一样的!
    2.   offsetX 是相对于当前窗口内,本触发事件对象(或者是某一区域)而言,如本例中你单击a区域,值是相对于a所在<td>区域而言,同理b,c,d都一样!
    3.   clientX ,x,offsetX共同点:它们是相对位置,相对于当前窗口,只是offsetX相对于当前窗口的某个触发对象的父容器而言!
    4.   screenX是相对与客户端显示器而言,是绝对位置!

 

【转载】http://blog.csdn.net/weinideai/article/details/3885444

 

 

二、scrollWidth,clientWidth与offsetWidth的区别

 

 


(注意:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)

scrollWidth 
对象的实际内容的宽不包括边线宽度,会随对象中内容的多少改变(内容多了可能会改变对象的实际度)


clientWidth 
对象可见的宽度不包括滚动条等边线,会随窗口的显示大小改变。


offsetWidth 
对象的可见宽度包括滚动条等边线,会随窗口的显示大小改变。 


一个scrollWidth和clientWidth的例子:

<html> 
<head> 
<title>ctt.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是对象看到的宽度(含边线,如滚动条的占用的宽)

 

【转载】http://blog.csdn.net/weinideai/article/details/3880600

 

【clientX,offsetX,screenX】 【scrollWidth,clientWidth,offsetWidth】的区别