Event对象 Event对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
Event对象只在事件发生的过程中才有效。
浏览器兼容性 FF:没有window.event对象。可以通过给函数的参数传递event对象。
示例代码:
鬼眼邪神的博客 - 锐客网
clientX clientX事件属性返回当事件被触发时鼠标指针相对于浏览器窗口(有效显示区域,不含滚动条)的水平坐标。
clientY clientY事件属性返回当事件被触发时鼠标指针相对于浏览器窗口(有效显示区域,不含滚动条)的垂直坐标。
测试clientX、clientY及其它事件属性用到的代码:
鬼眼邪神的博客 - 锐客网
*{
margin:0;
padding:0;
}
body {
margin:0 0 0 100px;
width:200px;
height:800px;
border:5px solid #000;
background:yellow;
}
.green {
position:relative;
margin:50px auto;
padding:20px;
width:80px;
height:80px;
border:10px solid #000;
background:rgb(0,255,0);
}
.red {
width:1px;
height:1px;
background:rgb(255,0,0);
}
.con {
width:200px;
height:100px;
}
下图中显示了页面滚动前后用鼠标点击绿色块上的红点时clientX和clientY。
文章图片
文章图片
浏览器兼容性 各浏览器都支持。在IE7中,clientX和clientY的计算起点不是浏览器窗口的有效显示区域,而是包括了有效显示区域边缘的2px的边框。
下图中的红色方框所在的位置是clientX和clientY的计算起点,而黄色的部分是浏览器窗口的有效显示区域。
文章图片
screenX screenX事件属性返回事件发生时鼠标指针相对于屏幕的水平坐标。
screenY screenY事件属性返回事件发生时鼠标指针相对于屏幕的垂直坐标。
浏览器兼容性 所有的浏览器都支持,并且解释都一样。
pageX pageX事件属性返回事件发生时鼠标指针相对于页面的水平坐标。不随页面滚动而发生变化。
pageY pageY事件属性返回事件发生时鼠标指针相对于页面的垂直坐标。不随页面滚动而发生变化。
浏览器兼容性 只有IE不支持。解决方法是pageX/Y=clientX/Y+(页面滚去的宽度/高度)。
知识扩展 对于获取页面滚动条滚动的高度,除IE外的浏览器可以通过window对象的pageXOffset/pageYOffset属性来获取。对于IE来说就比较麻烦一点,它依赖当前文档类型。文档类型分为Standards Mode和Quirks Mode,页面声明了DOCTYPE时为Standards Mode,反之为Quirks Mode。可以使用document.compatMode来获取,该方法也同时支持其它浏览器,其返回值为BackCompat或CSS1Compat。
当文档类型为Standards Mode,获取方式为:document.documentElement.scrollTop;而Quirks Mode时则为:document.body.scrollTop。
示例代码:
function scrollLeft(){
if ('pageXOffset' in window) {
return window.pageXOffset;
} else if (document.compatMode === "BackCompat") {
return document.body.scrollLeft;
} else {
return document.documentElement.scrollLeft;
}
}
offsetX offsetX事件属性返回发生事件的地点在事件源元素的坐标系统中的x坐标。
offsetY offsetY事件属性返回发生事件的地点在事件源元素的坐标系统中的y坐标。
浏览器兼容性
- 在Chrome、Safari、Opera中,事件源元素的坐标系统从border-box开始
- 在IE中,事件源元素的坐标系统从content-box开始。如果鼠标指针在border上,则会出现负值。
- FireFox不支持。
- 在IE7中,页面的坐标系统也包括了浏览器窗口的有效显示区域边缘的2px的灰色边框,但是起点还是和其它浏览器一样,即页面左上角(不包括灰色边框)。如果点击灰色边框,则会出现负值。
layerY layerY事件属性返回鼠标相比较于当前坐标系的y坐标,即如果触发元素没有定位属性,以页面为参考点。如果有,将改变参考坐标系,以触发元素的border-box的左上角为参考点。
浏览器兼容性 只有IE不支持。
x x事件属性返回鼠标相比较于当前坐标系的x坐标。
y 【JS(clientX/Y、screenX/Y、pageX/Y、offsetX/Y、layerX/Y、x/y)】y事件属性返回鼠标相比较于当前坐标系的y坐标。
浏览器兼容性
- FireFox不支持。
- 在Chrome、Safari、Opera中,始终以页面为参考系。
- 在IE中,如果触发元素没有定位属性,以页面为参考点;如果有,将改变参考坐标系,以触发元素的border区域的左上角为参考点。
- 在IE8中,页面和触发元素的坐标系统的起点则比其它浏览器下移了2px。当点击页面起点时,结果是(-2,-2)。当点击触发元素的border-box的左上角时,结果是(-2,-2)。
- 在IE7中,(1)当以页面为参考时,页面的坐标系统也包括了浏览器窗口的有效显示区域边缘的2px的灰色边框,但是起点还是和其它浏览器一样,即页面左上角(不包括灰色边框);如果点击灰色边框,则会出现负值。(2)当以触发元素为参考时,触发元素的坐标系统的起点则比其它浏览器下移了2px。当点击触发元素的border-box的左上角时,结果是(-2,-2)。
推荐阅读
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- JS/JavaScript|JS/JavaScript CRC8多项式 16进制
- JS|VUE学习笔记[30-46]
- 腾讯TEG实习|腾讯实习——Vue解决跨域请求
- 地图|高德地图清除指定覆盖物 自定义覆盖物样式(完整dome)
- Pyecharts|Pyecharts 猎聘招聘数据可视化
- flex|C语言-使用goto语句从循环中跳出
- HTML+Js实战项目|在网页中实现icon小图标的几种方法
- js中国标准时间转化为年月日,时间戳