注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

享受编码

    的乐趣

 
 
 

日志

 
 

深刻认识clientX,offsetX,screenX(转)  

2011-06-09 22:30:27|  分类: JavaScript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

概念(来源于网络):

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

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

view plaincopy to clipboardprint?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<BODY onclick='test()' style="margin:0 0 0 0" mce_style="margin:0 0 0 0">
<font color=green>设置或获取鼠标指针位置相对于窗口客户区域的 x,y 坐标,其中客户区域不包括窗口自身的控件和滚动条。</font>
<br/>
clientX=<INPUT TYPE="text" NAME="x1">
clientY=<INPUT TYPE="text" NAME="x2">
<br/>
<br/>
<font color=blue>设置或获取鼠标指针位置相对于触发事件的对象的 x,y 坐标。 </font>
<br/>
offsetX =<INPUT TYPE="text" NAME="x3">
offsetY =<INPUT TYPE="text" NAME="x4">
<br/>
<br/>
<font color=green>设置或获取获取鼠标指针位置相对于用户屏幕的 x,y 坐标 </font>
<br/>
screenX =<INPUT TYPE="text" NAME="x5">
screenY =<INPUT TYPE="text" NAME="x6">
<br/>
<br/>
<font color=blue>设置或获取鼠标指针位置相对于父文档的 x,y 像素坐标。</font>
<br/>
x=<INPUT TYPE="text" NAME="x7">
y=<INPUT TYPE="text" NAME="x8">
<br/>
<br/>
<TABLE align="center" width=400 height=500 border=1 style="border-style:none" mce_style="border-style:none" CELLPADDING=0 CELLSPACING=0 onclick='test()'>
<TR>
<TD>a</TD>
<TD>b</TD>
</TR>
<TR>
<TD>c</TD>
<TD>d</TD>
</TR>
</TABLE>
</body>
</html>
<SCRIPT LANGUAGE="JavaScript">
<!--
function test(){
document.all.x1.value=event.clientX;
document.all.x2.value=event.clientY;
document.all.x3.value=event.offsetX;
document.all.x4.value=event.offsetY;
document.all.x5.value=event.screenX;
document.all.x6.value=event.screenY;
document.all.x7.value=event.x;
document.all.x8.value=event.y;
}
//-->
</SCRIPT>

实验结果分析:

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

本文来自CSDN博客:http://blog.csdn.net/weinideai/archive/2009/02/13/3885444.aspx

补充:

screenX:鼠标在显示屏幕上的坐标。 

clientX:鼠标在页面显示区域的坐标。 

注:以上两个都是各浏览器通用的。 


pageX:FF特有,鼠标在页面上的位置,从页面左上角开始定位,这个可以很方便在整个页面上进行定位,IE没有直接替换的属性。 

layerX:FF特有,鼠标相对于“触发事件的元素的层级关系中离该元素最近的,设置了position的父元素”的边界的位置,从border的左上角开始定位,即如果这个父元素存在border,则坐标原点在border的左上角,而不是内容区域的左上角。 

offsetX:IE特有,鼠标相对于“触发事件的元素”的位置,从内容区域左上角开始定位,不是从border左上角开始!这个属性比较好用,用来判断鼠标点在一个元素中的哪个位置很方便,FF没有直接替换的属性。 

x:IE特有,跟layerX一个效果,可作为layerX的直接替换属性。 

注:IE和FF的定位有个1px的差别,实际上,IE的定位从0开始,FF的定位从1开始,FF永远会比IE大1px,需要根据实际情况处理。

  评论这张
 
阅读(554)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017